ExtJS+Railsでdeployできない、まだ。

昨日、deployがうまく行かないと悩んでたけど、なんとかなりそうな雰囲気。

precompileでjsが1つのファイルにマージされちゃうとうまく動かないような気がするので、以下のようにしてみた。

  1. app/assets/javascripts/application.jsで 以下の部分を削除して、マージの対象から外す。

      //= require_tree . 
    
  2. こうすると、precompileでcoffeeがjsに変換されないので、config/production.rbに以下を追加。

    require "find"
    
    js_path = File.join(Rails.root, "app/assets/javascripts/")
    Find.find(js_path).each do |f|
        if f.match(/^(.*)\.coffee$/)
            config.assets.precompile << $1.sub(js_path, "")
        end
    end
    
  3. さらに、config/production.rbで以下の設定を行う。

     config.serve_static_assets = true
     config.assets.compile = false
    
  4. あと、index.html.erbとかでjavascriptにリンクしているところは、applicationだけじゃなくてapp/app.jsも読み込むようにする。

     <%= javascript_include_tag 'application'%>
     <%= javascript_include_tag 'app/app'%>
    

ローカルで確認した限りでは、これで行けるみたい。 javascriptのファイルが1つにできないのは残念だけど、ExtJS使ってる限りはしょうがないのかなぁ。 rake assets:precompleの代わりに、Sencha Cmd使えばいいんだろうけどそこは後日試すことにする。

とりあえず、明日capistranoからAWSにデプロイしてみる。