gpt4 book ai didi

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

转载 作者:数据小太阳 更新时间:2023-10-29 08:50:15 24 4
gpt4 key购买 nike

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

配置.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 (NoMethodError) 的未定义方法‘db_user’”。

一般来说,我只是想将所有这些设置卸载到它们自己的文件中。如果 config.ru 不适合他们,那么执行此操作的合适方法是什么?

最佳答案

看起来可能是排序问题。如果该 DataMapper.setup(...) 行确实位于 app.rb 的顶层,它会在您 require 时立即调用 './app.rb',在 configure 运行之前。

最好不要在加载文件时做任何工作。改用某种形式的显式或惰性初始化。

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

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com