【发布时间】:2012-11-18 10:41:53
【问题描述】:
我有一个 sinatra 项目,其中包含 3 个 sinatra 应用程序(模块化风格)。
我在settings.rb 下有我的设置,我想将这些设置用于所有 3 个 sinatra 应用程序。
我正在运行ruby 1.9.3p327。
我的settings.rb:
#Environments: :production, :development
set :environment, ENV['RACK_ENV'] ||= "development".to_sym
disable :run #disable internal webserver
configure :development do
set :haml , :format => :html5, :ugly => false
enable :static
enable :show_exceptions
enable :raise_errors
end
configure :production do
set :haml , :format => :html5, :ugly => true
disable :static
disable :show_exceptions
disable :raise_errors
end
#######################
我的config.ru:
require 'sinatra' #Web Framework
require 'haml' #Haml Rendering for the views
require './db_setup.rb' #DB Setup
require './models.rb' #DB Models
require './app1.rb' #app1
require './app2.rb' #app2
require './app3.rb' #app3
map '/' do
run App1
end
map '/app2' do
run App2
end
map '/app3' do
run App3
end
我在哪里放置require './settings.rb'?
适合的地方:
在每个应用文件的顶部,例如app1.rb
在每个以Sinatra::Base 为父级的应用程序类中
在config.ru
我不知道为什么,但对我来说,它们都不起作用。唯一有效的方法是在每个应用程序类中复制和粘贴settings.rb 的内容。但这真的很脏,因为如果需要,我必须更改 3 个文件,例如,不同的 <DOCTYPE>
【问题讨论】:
-
你在config.ru中试的时候,是放在appX需要之前还是之后?
-
它并不适用于所有人,只适用于第一个......我还尝试在每个 appX.rb
require之前要求settings.rb但它只使用设置第一个应用程序... -
好吧,我犯了一个错误,它对他们都不起作用......
标签: ruby sinatra settings require