0

RubyonRailsで最初のFacebookアプリの作成が完了しました。私のコントローラーには、

 @oauth = Koala::Facebook::OAuth.new(app_id,secret_id,callback_url) (Replaced with temp values)

これらの値をコントローラーに含めても大丈夫ですか、それともアプリの別の場所に非表示にする必要がありますか?それらを変数に割り当てますか?

ここでの正しいプログラミングの習慣は何ですか?

4

2 に答える 2

4

実際には、バージョン管理システムにこれらの値を記録することを避けたいと思うことになります。

私が通常採用しているアプローチは次のとおりです。

config/application.rbアプリケーションクラス定義内のに以下を追加します

# Loads app config from /config/env_vars.yml
require 'yaml'
rails_root = Rails.root || File.dirname(__FILE__) + '/../..'
config = YAML.load_file(rails_root.to_s + '/config/env_vars.yml')
if config.key?(Rails.env) && config[Rails.env].is_a?(Hash)
  config[Rails.env].each do |key, value|
    ENV[key] = value.to_s
  end
end

でファイルを作成しconfig/env_vars.yml以下を含めます

development:
  FB_APP_ID: APP_ID_HERE
  FB_APP_SECRET: APP_SECRET_HERE

APP_ID_HEREAPP_SECRET_HEREあなたのAPIの詳細を置き換えます。このファイルに必要な数の他の値(つまり、Twitterキーなど)を追加し、環境ごとに繰り返します(たとえば、開発、ステージング、および本番用に異なるFBアプリがある場合)。ENV['FB_APP_ID']これらは、コントローラー内でなどによって参照できます。

このアプローチを使用する場合は、env_vars.ymlをVCSから除外できます。つまり、アプリで利用できるようにしながら、これらの値をリポジトリに実際にコミットしていません。


最後に、Herokuを使用する場合、これらの値を環境変数として割り当てるのはアプリごとに簡単であり(つまり、詳細heroku config:set FB_APP_ID=234234324234についてはhttps://devcenter.heroku.com/articles/config-varsを参照)、これらをコミットする必要がありません。 Herokuにプッシュする前に、リポジトリに値を設定します。

注意:Herokuを使用する場合、上記のアプローチにいくつかの変更があります

gitから除外env_vars.ymlすると、このファイルはHerokuにプッシュされたときに利用できなくなり、起動時にアプリがクラッシュします。最も簡単な解決策は、追加されたコードconfig/application.rbを次のように変更することです。

# Loads app config from /config/env_vars.yml
unless Rails.env == 'production'
  require 'yaml'
  rails_root = Rails.root || File.dirname(__FILE__) + '/../..'
  config = YAML.load_file(rails_root.to_s + "/config/env_vars.yml")
  if config.key?(Rails.env) && config[Rails.env].is_a?(Hash)
    config[Rails.env].each do |key, value|
      ENV[key] = value.to_s
    end
  end
end

条件付きでラップすることにより、 (Herokuのデフォルト環境)でunless Rails.env == 'production'実行されている場合はスキップされます。productionHerokuに複数の環境(、、など)を使用している場合staginguatこれを次のproductionように変更できます。

unless %w(staging uat production).include?(Rails.env)

これがコミットされてHerokuにプッシュされると、ファイルは検索されなくなり、Herokutoolbeltコマンドenv_vars.ymlを使用してアプリごとに構成変数を自由に設定できるようになります。heroku config:set

于 2013-03-03T19:53:19.060 に答える
3

この記事を見てください:http://railsapps.github.com/rails-environment-variables.html

私はfigarogemを使用することを好みます:https ://github.com/laserlemon/figaro

于 2013-03-03T19:50:10.787 に答える