0

Webサーバーのインスタンスが2つあります。1つはポート3000で実行され、もう1つは9090で実行されています。9090ポートにあるJSONファイルにアクセスしたいと思います。

Railsモデルでは、使用するとJSONファイルに正常にアクセスできます

stream = open("http://localhost:9090/file.json")

でも私がやりたいのはもっと

stream = open(":9090/file.json") # OUTPUT: No such file or directory - :9090/file.json

URLをハードコーディングすることを(明らかに)避けたいです。また、RailsコントローラーからRailsモデルに「ドメイン」を渡すことも避けたい場合。

または、openURIがこれを行わない場合、別のポートへのアクセスを処理するパッケージはありますか?

ありがとうございました!

4

1 に答える 1

2

たとえば、config/config.ymlのコンテンツをロードするグローバルCONFIG変数を作成できます。

このファイルをイニシャライザーにロードできます。これが私のものです:

if !defined? CONFIG
  CONFIG = YAML.load_file(File.join(Rails.root, "config", "config.yml"))[Rails.env] rescue []
end

次に、モデルで:

stream = open("#{CONFIG['url']}:9090/file.json")

config.ymlが次のようになっていると仮定します:

development:
  url: http://localhost

production:
  url: http://what.ever
于 2012-11-08T19:37:34.983 に答える