久しぶりにバックエンド側のRails周辺をいじったのでその時の作業メモとか感想を備忘録的に書いておきます。
他人にとっては役に立たない気がいたしますが。
動向
Railsって今どういう状況なの?
最後に触ったのが2015年付近。そこから追っていないのでRails界隈の情報を軽く収集。
2019/05現在 バージョン6がリリース間近という状況。Googleさんが悲しいワードをサジェストしてくる。
さっと何かを作る場合、Railsって便利な印象ですが、では今流行りのバックエンドってなんでしょうか?Java?Nodes.jsとか?元からAPIサーバとしてしか開発していないかったのでRailsを継続。Hanamiはどこかで聞いたことがあったな。今後検討してみよう。
Rubyって今どういう状況なの?
ruby 2.2.xはサポート切れらしい。Herokuでの最新版をチェック。
2019/05現在 バージョン2.6.xが最新版。Herokuでは下記の通り。
2.4.6 : patchlevel 354, Rubygems: 2.6.14.4
2.5.5: patchlevel 157, Rubygems: 2.7.6.2
https://devcenter.heroku.com/articles/ruby-support
2.6.3: patchlevel 62, Rubygems: 3.0.3
Rails・サーバサイド
rbenvのアップデート
$ cd ~/.rbenv
$ git pull
$ cd ~/.rbenv/plugins/ruby-build
$ git pull
$ rbenv install -l
$ rbenv install 2.5.5
$ rbenv versions
$ rbenv rehash
$ cd prj
$ rbenv local 2.5.5
$ rbenv versions
sqlite3でエラー
Rails で Add `gem ‘sqlite3’`エラーが解決したい
https://teratail.com/questions/173521
gem 'sqlite3', '~> 1.3.6'
に変えるとうまく動作すると思います。
pgでエラー
Rails does not work with pg 1.0.0
# pg 1.0 gem has removed these constants, but 4.2 ActiveRecord still expects themPGconn = PG::Connection
PGresult = PG::Result
PGError = PG::Error
https://github.com/rails/rails/issues/31673#issuecomment-409528178
https://github.com/rails/rails/issues/31673#issuecomment-450645483
I solved it by putting this in the Gemfile:
gem 'pg', '~> 0.21'
it worked for me, thanks a lot
Ruby関連
どうやるんだっけ系
Class.methodsを覚えておけばなんとかなる。
デバッグツールの使い方を忘れたときに
Gitの使い方を忘れたときに
XMLパーサー
JSONからデータを抜き取りたいがバラバラなポジションにデータが散らばっているぽいので面倒くさいのでxpathのようなもので抽出できないか検討。一旦JSON->XMLに変換して対処することにする。気になるのはパフォーマンス関連
XMLパースはPython速い。Ruby糞遅い。でもRubyにも希望はある。それはOx!
GemのいろいろXML/HTMLparserをまとめたい(Oga特集)
Geração de XML em Ruby: Builder vs Nokogiri vs Libxml vs Ox
Ox一択という感じだが古い比較記事ばかりなので検証してみる。
xml = data.to_xml
Benchmark.bm 10 do |r|
r.report "Ox" do
items1 = Ox.parse(xml).locate("*/tag/title").map do |item|
item.text
end
end
r.report "Oga" do
items2 = Oga.parse_xml(xml).xpath("//tag/title").map do |item|
item.text
end
end
r.report "Nokogiri" do
items3 = Nokogiri.XML(xml).xpath("//tag/title").map do |item|
item.text
end
end
end
実際のテストはそれぞれ10回実行
* ox (2.10.0)
* oga (2.15)
* nokogiri (1.10.3)
user system total real
Ox 0.031161 0.000000 0.031161 ( 0.031093)
Oga 0.221439 0.000145 0.221584 ( 0.221963)
Nokogiri 0.014430 0.000000 0.014430 ( 0.014641)
Oxのメソッドはxpathぽいもの。Ogaは Nokogiri から移行しやすそう。この環境と使用データではNokogiriでも問題なさそう
VCR
[VCR][RSpec] WebMock.stub_requestに失敗していないかを簡単に確かめたい
Heroku関連
デプロイ
Multiple apps in git remotesな時pushでエラー。リモート先を確認したい。使っていないappの情報はどうやって消すのだろうか
$ git remote -v
https://qiita.com/Tattsum/items/b86c9d698b0727934836
ログ確認
$ heroku logs --app apps_name -t
$ heroku run rails console --app apps_name