ruby - Sinatra 不理解 config.ru 中的设置?

标签 ruby sinatra rack

我正在尝试为 Sinatra 编写一个 config.ru 文件,其中每个环境都有一组数据库凭据:开发和生产。我正在执行以下操作:

应用程序.rb:

require 'sinatra'
require 'data_mapper'
require 'dm-mysql-adapter'

DataMapper.setup(:default, "mysql://#{settings.db_user}:#{settings.db_password}@#{settings.db_host}/#{settings.db_name}")

# ... the rest of the app

config.ru:

require 'sinatra'
require './app.rb' # the app itself

configure :development do
  set :db_name, 'thedatabase'
  set :db_user, 'root'
  set :db_password, ''
  set :db_server, 'localhost'
end

run Sinatra::Application

但是当我尝试使用 ruby app.rb 启动应用程序时,我收到“Sinatra::Application:Class 的未定义方法 'db_user' (NoMethodError)”。

通常,我只是尝试将所有这些设置卸载到它们自己的文件中。如果 config.ru 不适合他们,那么合适的方法是什么?

最佳答案

看起来可能是一个排序问题。如果 DataMapper.setup(...) 行确实位于 app.rb 的顶层,那么只要您 require './app.rb',在 configure 运行之前。

加载文件时最好不要执行任何操作。请改用某种形式的显式或延迟初始化。

关于ruby - Sinatra 不理解 config.ru 中的设置?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14429970/

相关文章:

ruby - 为什么我的流式命令对于 MapReduce 基本程序会失败?

ruby-on-rails - 通过虚拟属性选择 Rails 模型

ruby - Ruby/Sinatra 中的地理位置?

ruby-on-rails - 如何衡量每个线程在 puma 部署中使用了多少内存?

ruby - 背景中的 cucumber <reference>?

ruby-on-rails - RailsAdmin - 使用 Associations-scoping 限制关联记录

ruby - Sinatra/Ruby - 内部服务器错误 : invalid byte sequence in US-ASCII. 由具有特殊字符的数组引起

html - sinatra 公用文件夹的 Sinatra 访问控制允许来源

ruby-on-rails - 使用 `rails server` 和 `rackup` 有什么区别?

ruby-on-rails-3 - 如何在消费者中使用omniauth和oauth2注入(inject)http_authorization header ,以便在提供者中进行身份验证?