在文件顶部使用配置块会引发错误
Using a config block at the top of the file throws error
我正在尝试在模型出现之前设置与数据库的连接(使用 Sequel)。嗯,一定是这样,但我收到一个错误
undefined method `configure' for main:Object (NoMethodError)
这是代码,我没有发现在那里设置常量有什么问题,所以它可能与配置块或 config.ru.
有关
require 'sinatra/base'
require 'sequel'
require 'slim'
require 'sass'
require 'sinatra/flash'
require './sinatra/auth'
configure :development do
password = ENV["PGPASSWORD"]
DB = Sequel.postgres('development', user: 'postgres', password: password, host: 'localhost')
end
configure :production do
DB = Sequel.connect(ENV['DATABASE_URL'])
end
这是机架文件。我尝试在那里执行连接语句但失败了(到目前为止)
require 'sinatra/base'
require './main'
require './song'
require 'sequel'
map('/songs') { run SongController }
map('/') { run Website}
不明白为什么配置块不起作用。
编辑:我猜是因为对 SongController 的调用在 config.ru 中,连接语句也需要在其中。
编辑:更进一步,因为这是一个模块化应用程序,config.yml 可能是我的最佳选择。
您正在使用 sinatra/base
。这意味着您必须使用子类:
require 'sinatra/base'
require 'sequel'
require 'slim'
require 'sass'
require 'sinatra/flash'
require './sinatra/auth'
class MyApp < Sinatra::Base
configure :development do
password = ENV["PGPASSWORD"]
DB = Sequel.postgres('development', user: 'postgres', password: password, host: 'localhost')
end
configure :production do
DB = Sequel.connect(ENV['DATABASE_URL'])
end
run! if app_file == [=10=]
end
注意:您可以只使用 require sinatra
,所有不使用子类的魔法都可以使用。或者,如果您需要模块化应用程序,请使用 Sinatra::Application
,您将拥有所有的魔法。有关差异的完整说明,请参阅 sinatra 的自述文件。
我正在尝试在模型出现之前设置与数据库的连接(使用 Sequel)。嗯,一定是这样,但我收到一个错误
undefined method `configure' for main:Object (NoMethodError)
这是代码,我没有发现在那里设置常量有什么问题,所以它可能与配置块或 config.ru.
有关require 'sinatra/base'
require 'sequel'
require 'slim'
require 'sass'
require 'sinatra/flash'
require './sinatra/auth'
configure :development do
password = ENV["PGPASSWORD"]
DB = Sequel.postgres('development', user: 'postgres', password: password, host: 'localhost')
end
configure :production do
DB = Sequel.connect(ENV['DATABASE_URL'])
end
这是机架文件。我尝试在那里执行连接语句但失败了(到目前为止)
require 'sinatra/base'
require './main'
require './song'
require 'sequel'
map('/songs') { run SongController }
map('/') { run Website}
不明白为什么配置块不起作用。
编辑:我猜是因为对 SongController 的调用在 config.ru 中,连接语句也需要在其中。 编辑:更进一步,因为这是一个模块化应用程序,config.yml 可能是我的最佳选择。
您正在使用 sinatra/base
。这意味着您必须使用子类:
require 'sinatra/base'
require 'sequel'
require 'slim'
require 'sass'
require 'sinatra/flash'
require './sinatra/auth'
class MyApp < Sinatra::Base
configure :development do
password = ENV["PGPASSWORD"]
DB = Sequel.postgres('development', user: 'postgres', password: password, host: 'localhost')
end
configure :production do
DB = Sequel.connect(ENV['DATABASE_URL'])
end
run! if app_file == [=10=]
end
注意:您可以只使用 require sinatra
,所有不使用子类的魔法都可以使用。或者,如果您需要模块化应用程序,请使用 Sinatra::Application
,您将拥有所有的魔法。有关差异的完整说明,请参阅 sinatra 的自述文件。