Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/heroku/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby 如何根据工作环境更改JS、CSS和MySQL数据库?_Ruby_Heroku_Sinatra_Development Environment_Production Environment - Fatal编程技术网

Ruby 如何根据工作环境更改JS、CSS和MySQL数据库?

Ruby 如何根据工作环境更改JS、CSS和MySQL数据库?,ruby,heroku,sinatra,development-environment,production-environment,Ruby,Heroku,Sinatra,Development Environment,Production Environment,在Heroku中,如何根据我的Sinatra应用程序的环境更改它访问的数据库 也就是说:如果main.rb在我的本地机器上,我如何让它访问localhost,但是当我git将它推送到Heroku repo上的任何分支时,让它访问一个实时数据库 JS和CSS也是如此。如果我在本地机器上工作,我将如何设置我的应用程序,使其在dev/JS/script.JS中访问JS,但在live中它将访问live/JS/script.JS?通常情况下,对于JS和css的不同环境,您不应该有单独的文件夹,它们应该放在

在Heroku中,如何根据我的Sinatra应用程序的环境更改它访问的数据库

也就是说:如果
main.rb
在我的本地机器上,我如何让它访问
localhost
,但是当我
git将它推送到Heroku repo上的任何分支时,让它访问一个实时数据库


JS和CSS也是如此。如果我在本地机器上工作,我将如何设置我的应用程序,使其在
dev/JS/script.JS
中访问JS,但在live中它将访问
live/JS/script.JS

通常情况下,对于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

链接到它们。首先,您通常不应该根据运行的环境拥有单独的资产。当你需要更新的时候,这会给你带来一个小小的噩梦

在Ruby land中,这通常是通过服务器(Heroku等)在运行应用程序时设置全局。这些变量和值在您的应用程序中可用,因此您可以检查是否正在生产、测试等环境中运行

Heroku会自动设置DATABASE_URL环境变量,您可以这样访问它:

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

在每台服务器上,将相应地设置数据库URL变量

我明白了。数据库也可能类似吗?也就是说,我将创建两个独立的
connectToDB.rb
文件,并为每个文件提供一个
configure
方法?