備忘録のような何か

何か += 備忘録( 日々のこと, 妄想, IT, DIY, 畑仕事 );

railsのバージョンアップ(4.0.0 -> 4.2.5)

移転しました。

約5秒後に自動的にリダイレクトします。



前に作った家計簿アプリのrailsのバージョンが4.0.0のままだったので4.2.5にバージョンアップしました。

やり方はこちらを参考にさせてもらいました。
Ruby on Rails の大掃除! 3.2 → 4.1 にバージョンアップするの巻 - komiyakの通り道

さてまずは、Gemfileの差分を確認から。

f:id:m_uta:20160220105341p:plain:w450

なんか空白行の差分もあって見づらいけど、とりあえず最新バージョンに変更。

Gemfileを変更したらばbundle updateを実行して...
エラーになった。。。

一旦Gemfile.lockを削除して。rm Gemfile.lock
bundle install --without productionを実行。
やりましたよ!成功です。

次はrails updateですね?

$ bundle exec rake rails:update
    conflict  config/boot.rb
Overwrite /Users/<user name>/dev/ruby/rails/kakeibo/src/config/boot.rb? (enter "h" for help) [Ynaqdh] n
        skip  config/boot.rb
       exist  config
    conflict  config/routes.rb
Overwrite /Users/<user name>/dev/ruby/rails/kakeibo/src/config/routes.rb? (enter "h" for help) [Ynaqdh] n
        skip  config/routes.rb
    conflict  config/application.rb
Overwrite /Users/<user name>/dev/ruby/rails/kakeibo/src/config/application.rb? (enter "h" for help) [Ynaqdh] n
        skip  config/application.rb
    conflict  config/environment.rb
Overwrite /Users/<user name>/dev/ruby/rails/kakeibo/src/config/environment.rb? (enter "h" for help) [Ynaqdh] n
        skip  config/environment.rb
      create  config/secrets.yml
       exist  config/environments
    conflict  config/environments/development.rb
Overwrite /Users/<user name>/dev/ruby/rails/kakeibo/src/config/environments/development.rb? (enter "h" for help) [Ynaqdh] n
        skip  config/environments/development.rb
    conflict  config/environments/production.rb
Overwrite /Users/<user name>/dev/ruby/rails/kakeibo/src/config/environments/production.rb? (enter "h" for help) [Ynaqdh] n
        skip  config/environments/production.rb
    conflict  config/environments/test.rb
Overwrite /Users/<user name>/dev/ruby/rails/kakeibo/src/config/environments/test.rb? (enter "h" for help) [Ynaqdh] n
        skip  config/environments/test.rb
       exist  config/initializers
      create  config/initializers/assets.rb
   identical  config/initializers/backtrace_silencers.rb
      create  config/initializers/cookies_serializer.rb
   identical  config/initializers/filter_parameter_logging.rb
   identical  config/initializers/inflections.rb
    conflict  config/initializers/mime_types.rb
Overwrite /Users/<user name>/dev/ruby/rails/kakeibo/src/config/initializers/mime_types.rb? (enter "h" for help) [Ynaqdh] n
        skip  config/initializers/mime_types.rb
    conflict  config/initializers/session_store.rb
Overwrite /Users/<user name>/dev/ruby/rails/kakeibo/src/config/initializers/session_store.rb? (enter "h" for help) [Ynaqdh] n
        skip  config/initializers/session_store.rb
   identical  config/initializers/wrap_parameters.rb
       exist  config/locales
   identical  config/locales/en.yml
        gsub  config/initializers/cookies_serializer.rb
       exist  bin
   identical  bin/bundle
    conflict  bin/rails
Overwrite /Users/<user name>/dev/ruby/rails/kakeibo/src/bin/rails? (enter "h" for help) [Ynaqdh] n
        skip  bin/rails
   identical  bin/rake
      create  bin/setup


Oh...なんかいっぱいConflictしてますな。
これを1つずつ差分を見ればいいんですね?

  • config/boot.rb:上書き
  • config/routes.rb:変更なし
  • config/application.rb:上書き
  • config/environment.rb:上書き
  • config/environments/development.rb:上書き
  • config/environments/production.rb:上書き
  • config/environments/test.rb:上書き
  • config/initializers/mime_types.rb:上書き
  • config/initializers/session_store.rb:上書き
  • bin/rails:上書き
  • bin/setup:新規追加

これでよし。

最後に動作確認をしましょう。
テストコードとか書いてないので(^^;)
押せるボタンを全部クリック。魂の16連射!!!!!!!!!!!!!!!!

小さいアプリなのでこれでなんとかなるけど、テストコードはちゃんと書かないとね☆

アクションは問題なかったけど、なんか表示がおかしい。

<%= @expenseAll.sum(:amount, :conditions => ["date=?", date]).to_c %>

@incomeAllは月間のキャッシュフロー(支出分)が入ってるモデルオブジェクト。
ここから、ある1日分の支出合計を表示する箇所なんだけど。。。
なぜか月間の支出合計が表示されています。
実行されているSQLを見るとconditionsの部分の条件が効いていない。

う〜ん、それならばと。ちょっと修正。

<%= @expenseAll.where("date=?", date).sum(:amount).to_c %>

これでちゃんと表示されるようになったけれど、なにが悪かったのかな?
そのうち調べよう(覚えてたらw)

それなりに時間かかったけど、思ってたより手間はかからなかったな。
まあ、サードパーティ製のgemをほとんど使ってなかったのが大きかったと思う。

(。・ω・)ノシ