1

Capistranoのdeploy.rbファイルで、サーバー名やポートなどのさまざまな環境をセットアップしました。また、deploy.rbで定義されている別のサーバーにコールバックを送信するようにユーザーに要求します。この値をアプリにきれいに渡すにはどうすればよいですか?

この効果への何か:

config / deploy.rb:

set :callback_url, "http://somecallbackurl.com:12345/bla"

app / controllers / myapp.rb:

def get_callback_url
   ???
end

私はシナトラを使用しています。

4

2 に答える 2

2

私は解決策を見つけました、そしてそれは環境変数を使うことです。

deploy.rbから設定します

run "export CALLBACK_URL=#{callback_url}"

アプリから:

def get_callback_url
    ENV['CALLBACK_URL']
end

私はそれが最もクリーンな解決策であるとは言いませんが、それは機能します。

于 2012-11-27T00:12:52.170 に答える
0

共有YAMLファイルを使用してこの種の構成を保存し、個別にロードすることをお勧めします。たとえば、次のような名前のファイルがありますconfig/settings.yml

:callback_url: "http://somecallbackurl.com:12345/bla"

config/deploy.rb、次のことができます。

settings = YAML.load_file('config/settings.yml')
set :callback_url, settings[:callback_url]

そして、でconfig/initializers/settings.rb、あなたは持つことができます:

settings = YAML.load_file('config/settings.yml')
CALLBACK_URL = settings[:callback_url]

最後に、ではapp/controllers/myapp.rb、次のようにします。

def get_callback_url
   CALLBACK_URL
end

共有YAMLファイルを使用することは、私が最初に考えたものです。別のアプローチは、rubyファイルでいくつかの定数を定義し、そのファイルを初期化子との両方で要求することですdeploy.rb。基本的な考え方は、アプリをcapistrano環境に依存させたくないということです。そのため、共有構成を分離する方法を見つける必要があります。

于 2012-11-26T20:27:45.790 に答える