【问题标题】:Git - Push to Deploy and Removing Dev ConfigGit - 推送部署和删除开发配置
【发布时间】:2012-02-20 20:47:56
【问题描述】:

所以我正在使用 Rails 编写一个 Facebook 应用程序,并托管在 Heroku 上。

在 Heroku 上,您通过将存储库推送到服务器来进行部署。

当我这样做时,我希望它自动将一些开发设置(例如,facebook 密码)更改为生产设置。

最好的方法是什么? Git钩子?

【问题讨论】:

    标签: ruby-on-rails-3 git heroku


    【解决方案1】:

    您可以根据结帐时自动执行的'smudge'脚本来探索content filter的想法

    你会声明:

    • 一些(版本化的)模板文件
    • 一些价值文件
    • 一个(版本化)smudge 脚本能够识别其执行环境并从值文件或从 Git 存储库外部的其他来源(对于更敏感的信息)生成必要的(非版本化)最终文件。李>

    【讨论】:

      【解决方案2】:

      如果您不想在部署时使用 Git 钩子或其他方法来修改实际代码,有几种常见做法可以处理这种情况。

      基于环境的配置

      如果您不介意在存储库中使用您的配置设置的生产值,您可以使它们基于环境。我有时会使用这样的东西:

      # config/application.yml
      
      default:
        facebook:
          app_id: app_id_for_dev_and_test
          app_secret: app_secret_for_dev_and_test
          api_key: api_key_for_dev_and_test
      
      production:
        facebook:
          app_id: app_id_for_production
          app_secret: app_secret_for_production
          api_key: api_key_for_production
      
      # config/initializers/app_config.rb
      
      require 'yaml'
      
      yaml_data = YAML::load(ERB.new(IO.read(File.join(Rails.root, 'config', 'application.yml'))).result)
      
      config = yaml_data["default"]
      begin
        config.merge! yaml_data[Rails.env]
      rescue TypeError
        # nothing specified for this environment; do nothing
      end
      
      APP_CONFIG = HashWithIndifferentAccess.new(config)
      

      现在您可以通过例如APP_CONFIG[:facebook][:app_id] 访问数据,并且该值将自动根据应用程序启动的环境而有所不同。

      基于环境变量的配置

      另一种选择是通过环境变量指定生产数据。 Heroku 允许您通过config vars 执行此操作。

      1. 设置您的代码以使用基于环境的值(可能具有可选的默认值):

        facebook_app_id = ENV['FB_APP_ID'] || 'some default value'
        
      2. 通过在控制台上键入在 Heroku 上创建生产配置变量:

        heroku config:add FB_APP_ID=the_fb_app_id_to_use
        

      现在ENV['FB_APP_ID'] 在生产 (Heroku) 中是 the_fb_app_id_to_use,在开发和测试中是 'some default value'

      上面链接的 Heroku 文档包含有关此策略的更多详细信息。

      【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-08-23
      • 1970-01-01
      • 2010-09-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多