開発

私的Rails関連作業メモ2019

久しぶりにバックエンド側のRails周辺をいじったのでその時の作業メモとか感想を備忘録的に書いておきます。

他人にとっては役に立たない気がいたしますが。

動向

Railsって今どういう状況なの?

最後に触ったのが2015年付近。そこから追っていないのでRails界隈の情報を軽く収集。

Ralis本家

「Railsは終わった」と言われる理由

2019/05現在 バージョン6がリリース間近という状況。Googleさんが悲しいワードをサジェストしてくる。

さっと何かを作る場合、Railsって便利な印象ですが、では今流行りのバックエンドってなんでしょうか?Java?Nodes.jsとか?元からAPIサーバとしてしか開発していないかったのでRailsを継続。Hanamiはどこかで聞いたことがあったな。今後検討してみよう。

Rubyって今どういう状況なの?

ruby 2.2.xはサポート切れらしい。Herokuでの最新版をチェック。

Ruby本家

Heroku ruby-support

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

2.6.3: patchlevel 62, Rubygems: 3.0.3

https://devcenter.heroku.com/articles/ruby-support

Rails・サーバサイド

rbenvのアップデート

rbenv/ruby-buildのアップデート

$ 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’`エラーが解決したい

gem 'sqlite3', '~> 1.3.6'に変えるとうまく動作すると思います。

https://teratail.com/questions/173521

pgでエラー

Rails does not work with pg 1.0.0


# pg 1.0 gem has removed these constants, but 4.2 ActiveRecord still expects them

PGconn = PG::Connection

PGresult = PG::Result

PGError = PG::Error

https://github.com/rails/rails/issues/31673#issuecomment-409528178


I solved it by putting this in the Gemfile:
gem 'pg', '~> 0.21'
it worked for me, thanks a lot

https://github.com/rails/rails/issues/31673#issuecomment-450645483

Ruby関連

どうやるんだっけ系

Rubyで使えるメソッドの一覧を取得する

Class.methodsを覚えておけばなんとかなる。

Pry の簡易的なコマンドまとめ

デバッグツールの使い方を忘れたときに

サルでもわかるGit入門

Gitの使い方を忘れたときに

XMLパーサー

JSONからデータを抜き取りたいがバラバラなポジションにデータが散らばっているぽいので面倒くさいのでxpathのようなもので抽出できないか検討。一旦JSON->XMLに変換して対処することにする。気になるのはパフォーマンス関連

XMLパースはPython速い。Ruby糞遅い。でもRubyにも希望はある。それはOx!

XML with Ruby

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の情報はどうやって消すのだろうか

HerokuのPush先を変更

$ git remote -v

https://qiita.com/Tattsum/items/b86c9d698b0727934836

【herokuコマンド】環境変数

ログ確認

$ heroku logs --app apps_name -t
$ heroku run rails console --app apps_name
管理人

Recent Posts

CanvaがSerif (Affinity) を買収

私は使ったことがないのですが名前はよく聞…

4週間 ago

Serifのスプリングセール – アドオンが50%オフ

Affinity Photoなどレタッチ…

2か月 ago

音声がロボットのようになるときの対処

リモート会議などでたまに相手の音声がおか…

3か月 ago

Serifのブラックフライデー – 全品40%オフ V1ユーザは更にお得!

恒例のブラックフライデーセールが始まりま…

5か月 ago

[rust] rayonで書き直してみました

前回のコードを元にrayonを使った処理…

5か月 ago

[rust] async-stdで書き直してみました

前回のコードをasync-stdで書き直…

6か月 ago