

rails 3.2 を使っています。

development モードの時は

[code]

    app/assets/javascripts/ajaxzip3.js
    
[/code]

を

production モードの時は

[code]

    app/assets/javascripts/ajaxzip3-https.js
    
[/code]

を使う。という事は可能でしょうか？

[ajaxzip3 という郵便番号検索ライブラリ](https://code.google.com/p/ajaxzip3/)を使用しているのですが  
production 環境の時は https で、development 環境の時は http で使っているためです。

上記のリンクサイトには以下の記述があります。本番環境のみ動作させるのは簡単ですが、やっぱり開発環境でも動いてくれないと楽しく無いです (^^;

[code]

    # httpサーバの場合はhttp://ajaxzip3.googlecode.com/svn/trunk/ajaxzip3/ajaxzip3.js をご利用ください。
    # httpsサーバの場合はhttps://ajaxzip3.googlecode.com/svn/trunk/ajaxzip3/ajaxzip3-https.js をご利用ください。 
    
[/code]


CC BY-SA 3.0
2015-02-26T06:51:41.623
7127
2015-02-26T11:24:31.757
7208
question
javascript ruby-on-rails
本番環境と開発環境で読み込む js を使い分ける方法は？


`app/views` 内のHTMLで以下のように書くのはどうでしょう。

[code]

    <% if Rails.env.production? %>
      <script src="https://ajaxzip3.googlecode.com/svn/trunk/ajaxzip3/ajaxzip3-https.js"></script>
    <% else %>
      <script src="http://ajaxzip3.googlecode.com/svn/trunk/ajaxzip3/ajaxzip3.js"></script>
    <% end %>
    
[/code]

Slim の場合はこんな感じでしょうか。

[code]

    - if Rails.env.production?
      script src="https://ajaxzip3.googlecode.com/svn/trunk/ajaxzip3/ajaxzip3-https.js"
    - else
      script src="http://ajaxzip3.googlecode.com/svn/trunk/ajaxzip3/ajaxzip3.js"
    
[/code]


CC BY-SA 3.0
2015-02-26T07:21:39.390
7129
2015-02-26T08:46:05.180
2015-02-26T08:46:05.180
85
208
7127
answer


`request.protocol`とHelperメソッドを組み合わせるとスッキリ書けそうです。

[code]

    # app/helpers/application_helper.rb
    module ApplicationHelper
      def ajaxzip3_include_tag
        file_name = ssl? ? 'ajaxzip3-https.js' : 'ajaxzip3.js'
        javascript_include_tag(file_name)
      end
    
      def ssl?
        request.protocol == 'https://'
      end
    end
    
[/code]

[code]

    <% # app/views/layouts/application.html.erb %>
    <!DOCTYPE html>
    <html>
    <head>
      <title>Your app name</title>
      <%= stylesheet_link_tag    'application', media: 'all' %>
      <%= javascript_include_tag 'application' %>
      <%= ajaxzip3_include_tag %>
      <%= csrf_meta_tags %>
    </head>
    <body>
    
    <%= yield %>
    
    </body>
    </html>
    
[/code]

あと、productionで使うなら `config.assets.precompile` でファイルを指定しておく必要があるかもしれません。

[code]

    # config/environments/production.rb
    config.assets.precompile += %w(ajaxzip3-https.js)
    
[/code]

参考になれば幸いです。


CC BY-SA 3.0
2015-02-26T08:39:18.530
7140
2015-02-26T11:24:31.757
2015-02-26T11:24:31.757
85
85
7127
answer