SR Office

ブログ
2013年6月5日

Railsでdevelopmentとproductionでインクルードするスクリプトを変更





Railsで開発時と運用時でインクルードするjavascriptを変えたい。

そもそもなぜこのような事をしたいのかは、webアプリをjavascriptで書いているが、サーバーへのアクセスが必要なもときがあり、それにはurlを指定する必要がある。だけど、開発環境時ではローカルにあるサーバーにアクセスさせたいし、運用時には正式なサーバー
にアクセスさせたい。
これまでは、運用環境にデプロイするたびに手動でurlを変更していた。

この作業はいずれミスをするだろうし、何しろ面倒くさい。なので、urlなど環境ごとに可変の情報を集めておき、開発時にはインクルードし、運用時にはインクルードしないようにできないか。と考えた。

google先生に聞いたみたところ、stackoverflowでこれを見つけた。

まさしくこれがやりたかったこと。

application.html.erb

<%load_javascript %>

application_helper.rb

module ApplicationHelper

 def load_javascript
   if Rails.env.production?
     javascript_include_tag 'application'
   else
     javascript_include_tag 'application', 'devVars'
   end
 end

end

devVars.jsに開発用の情報を記載する。
注意事項は、app/assets/javascriptsにdevVar.jsを置くとapplicationと一緒にインクルードされてしまうので、別の場所に置く必要がある。
vendor/assets/javascriptsに置いてみたところうまくいった。
同じ事で悩んでいる人はいないのだろうか。
railsでこれがベストプラクティクスか知りたい。