0

在Heroku中,如何根據環境更改我的Sinatra應用訪問的數據庫?如何根據工作環境更改JS,CSS和MySQL數據庫?

那就是:如果main.rb是我的本地機器上,我怎麼得到它的訪問localhost,但是當我git push任何分支在我的Heroku回購,得到它的訪問活動的數據庫?

JS和CSS也一樣。如果我在我的本地機器上工作,我將如何設置我的應用程序,以便它訪問dev/js/script.js中的JS,但是在生活時它將訪問live/js/script.js

回答

1

首先,你不應該通常根據您正在運行的環境獨立資產。當你需要更新的東西時,這會給你一個小小的噩夢。

這是如何通常在Ruby土地上的作品是服務器(Heroku等)設置全球environment variables當它運行你的應用程序。這些變量&值都可以在你的應用程序,所以你可以檢查,如果你正在運行在生產,測試等

Heroku的自動設置DATABASE_URL環境變量,你可以像這樣訪問:

configure do 
    ActiveRecord::Base.establish_connection(ENV['DATABASE_URL']) 
end 

在每個服務器的DATABASE_URL變量將相應地設置。

1

通常情況下,你不應該有不同的環境對js和css單獨的文件夾,並且他們應該資產文件夾下的說: 如果你有一個很好的理由這樣做,你可以使用下面的代碼:

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 

然後在視圖中,如果你把JavaScript的資產規模/ JavaScript,您可以鏈接到他們的路徑javascripts/filename.js

+0

我明白了。它也可能與數據庫類似?也就是說,我會創建兩個獨立的'connectToDB.rb'文件,並且每個文件都有一個'configure'方法? – 2014-11-21 19:11:37