【问题标题】:How to change JS, CSS and MySQL database depending on work environment?如何根据工作环境更改 JS、CSS 和 MySQL 数据库?
【发布时间】:2014-11-21 04:10:27
【问题描述】:

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

也就是说:如果main.rb 在我的本地计算机上,我如何让它访问localhost,但是当我将git push 它访问我的 Heroku 存储库上的任何分支时,让它访问实时数据库?

对于 JS 和 CSS 也是如此。如果我在本地机器上工作,我将如何设置我的应用程序以便它访问 dev/js/script.js 中的 JS,但当它运行时它会访问 live/js/script.js

【问题讨论】:

    标签: ruby heroku sinatra development-environment production-environment


    【解决方案1】:

    首先,您通常不应该根据您运行的环境拥有单独的资产。当您需要更新内容时,这会给您带来小小的噩梦。

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

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

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

    在每台服务器上都会相应地设置 DATABASE_URL 变量。

    【讨论】:

      【解决方案2】:

      通常你不应该为不同的环境为 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链接到它们

      【讨论】:

      • 我明白了。数据库也可能类似?也就是说,我会创建两个单独的 connectToDB.rb 文件,并且每个文件都有一个 configure 方法?
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-03-18
      • 2022-01-11
      • 1970-01-01
      • 1970-01-01
      • 2014-11-18
      • 2011-07-25
      相关资源
      最近更新 更多