在Heroku中,如何更改我的Sinatra应用程序访问的数据库,具体取决于其环境?
那就是:如果main.rb
在我的本地计算机上,如何让它访问localhost
,但是当我git push
到我的Heroku仓库中的任何分支时,请获取它访问实时数据库?
JS和CSS相同。如果我在本地计算机上工作,我如何设置我的应用程序以便它在dev/js/script.js
中访问JS,但是在实时它将访问live/js/script.js
?
答案 0 :(得分:1)
通常你不应该为js和css的不同环境设置单独的文件夹,它们应该放在assets文件夹下: 如果您有充分的理由这样做,可以使用以下代码:
set :root, File.expand_path(File.dirname(__FILE__))
configure :development do
set :public_folder, Proc.new { "#{root}/dev/assets" }
end
configure :production do
set :public_folder, Proc.new { "#{root}/live/assets" }
end
然后在视图中,如果您将javascripts放在assets / javascript下,您可以使用路径javascripts/filename.js
答案 1 :(得分:1)
首先,根据您运行的环境,通常不应该有单独的资产。当你需要更新时,这可以给你一个小噩梦。
这通常在Ruby中的作用是服务器(Heroku等)在运行你的应用程序时设置全局environment variables。这些变量&您的应用中可以使用这些值,以便检查您是否在生产,测试等方面运行。
Heroku自动设置DATABASE_URL环境变量,您可以这样访问它:
configure do
ActiveRecord::Base.establish_connection(ENV['DATABASE_URL'])
end
在每台服务器上,相应地设置DATABASE_URL变量。