我在config / environment.rb上有一个环境配置文件,其中包含以下内容:
require 'rubygems'
require 'bundler'
Bundler.setup
require 'sinatra'
require 'sinatra/base'
require 'sinatra/reloader'
在我的config.ru中我有:
require File.expand_path('../config/environment', __FILE__)
require 'slim'
require 'coffee-script'
require 'padrino-helpers'
require 'sinatra/twitter-bootstrap'
我收到错误:
Errno::ENOENT at /profile
No such file or directory - /Users/myusername/projects/accounts/config/views/profile.slim
当我从config / environment.rb文件中删除require'sinatra'并进入config.ru时,这只会消失。谁能解释为什么会这样?我假设require File.expand_path('../config/environment', __FILE__)
只会将该文件中的所有要求包含到config.ru中,但似乎并非如此。它现在认为我的观点存在于配置文件夹中。
我按照这里给出的建议:How do I make Rake tasks run under my Sinantra app/environment?但是再一次,移动需要'sinatra'进入环境会破坏应用程序。
答案 0 :(得分:2)
错误看起来像是来自Sinatra在呈现响应时无法找到Slim模板,因为它正在views
目录下查找config
目录。默认情况下,Sinatra会查找相对于应用程序文件的视图目录,该文件(默认情况下)是调用require 'sinatra'
的文件。在您的情况下,需求行位于config/environment.rb
,因此Sinatra将其视为应用文件,并在其下方查找views
目录。
我假设您有一个未显示的实际应用程序文件。最简单的解决方案可能是explicitly set the application file setting in there:
set :app_file, __FILE__
根据您的设置,您可能需要specify the view directory directly代替:
set :views, 'path/to/views'