QA@IT

config.ruを環境変数によっては、読み込ませないようにしたい。

3631 PV

現在Rails4で開発しています。このサービスで、productionの時はconfig.ruを読み込まず、developmentでは読む込む。というふうにしたいのですが、うまく出来ずに困っています。

状況を説明させていただくと、現在Railsのアプリをサブドメインではなく、サブディレクトリでアクセスを振り分けなければいけない状況にあります。
そこで調べたところ、config.ruを削除すれば正常にサブディレクトリ時でも動く事が分かりました。
そこで、config.ruを削除したのですが、開発環境ではサブディレクトリでアクセスするのではなく、localhost:3000でアクセスするようになっています。そのため、config.ruがない状態ではエラーになってしまいます。
この事から、開発環境ではconfig.ruがあって、本番環境ではconfig.ruが無い。という状況を作る必要性がでてきました。

そこで、gitignoreにconfig.ruを追加したのですが、これだと新規にgit cloneした人は手動でconfig.ruを追加しなくてはならないという状況になってしまいました。

どのようにすればこの問題を解決できるでしょうか?ご回答いただけると助かります。

回答

サブディレクトリつきでデプロイしたことないので、間違いがあるかもしれません。
config.ru 消さなくても、下記で実現できませんでしょうか? (サブディレクトリを /foo としてます)

# config/environments/production.rb
Rails.application.configure do
  # ...
  config.relative_url_root = "/foo"
end
# config.ru
require ::File.expand_path('../config/environment',  __FILE__)
map ActionController::Base.config.relative_url_root || "/" do
  run Rails.application
end

rails s ならサブディレクトリなしで、rails s -e production ならサブディレクトリありでアクセスできました (Ruby 2.1.2, Rails 4.1.5)。

Railsアプリケーションをサブディレクトリ以下で動作させる(Rails 3.2.13で確認) - Qiita を参考 (ほぼそのまま) にしました。

編集 履歴 (0)
  • お返事ありがとうございます。

    なるほど、この様に設定すればいけたんですね。おかげさまで解決できました、ありがとうございます。
    -
ウォッチ

この質問への回答やコメントをメールでお知らせします。