我正在尝试为 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/