【问题标题】:Environment configuration for Sinatra errorSinatra 错误的环境配置
【发布时间】:2014-05-24 14:16:59
【问题描述】:

我在 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 中,但似乎并非如此。它现在认为我的视图存在于 config 文件夹中。

我遵循了这里给出的建议:How do I make Rake tasks run under my Sinantra app/environment? 但同样,将 require 'sinatra' 移动到环境中会破坏应用程序。

【问题讨论】:

    标签: ruby configuration sinatra config


    【解决方案1】:

    该错误看起来是由于 Sinatra 在呈现响应时无法找到 Slim 模板,因为它正在寻找 config 目录下的 views 目录。默认情况下,Sinatra 查找相对于应用程序文件的视图目录,该文件(同样默认情况下)是调用require 'sinatra' 的文件。在您的情况下,require 行位于 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'
    

    【讨论】:

    • 正确设置视图就可以了。我的应用程序存在于我的 config.ru 中,因此该方法最适合我的目的。非常感谢!
    猜你喜欢
    • 2011-08-15
    • 2018-10-25
    • 2023-01-08
    • 2011-11-05
    • 1970-01-01
    • 1970-01-01
    • 2019-12-15
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多