RailsとかRubyの過去に学んだものを適当に残しておく(最近はRailsもRubyも触ってない・・)
思い出したら随時追加する。
rakeタスクをrails consoleから実行する
require 'rake'
Rails.application.load_tasks
Rake::Task['hoge:huga'].execute
# 引数つけて実行
Rake::Task["hoge:huga"].execute({ hogege: 'hugaga' })
bundle でバージョン指定してインストール
# bundle installするときはGemfile.lockのバージョンを確認してから実行
bundle _1.16.1_ install
rakeタスク内のメソッドはObjectクラス直下に作られちゃう
namespace配下にメソッド書いていると思っていてもObjectクラス以下に作られるのでバグの原因になるかもね
SQLをrails consoleから実行
sql="SELECT * from hoge);"
result=ActiveRecord::Base.connection.select_all(sql).to_hash
rspecの書き方で参考になるページ
http://www.betterspecs.org/jp/
https://speakerdeck.com/willnet/clean-test-code-revised
ruby引数処理
わかりやすい記事
キーワード引数をhashとして受け取る方法とか
https://qiita.com/metheglin/items/306e81c95f8a5cdea296
privateメソッドをrails consoleから呼び出す
# User.find_by(id: 1)は引数
# Hugaはクラス, hoge_private_methodはHugaクラス内のプライベートメソッド
Huga.send(:hoge_private_method, User.find_by(id: 1) )
CSV書き出し
使い捨てコード書くときによく使う
CSV.open('/tmp/hoge.csv','wb') do |csv|
csv << [1,2]
end
テキスト読み込み
File.foreach("tmp/hoge.txt"){|f| s << f.chomp.to_i}
rakeタスクの確認
bundle exec rake -vT
rails consoleでexplainを実行
User.where(id: 1).joins(:articles).explain
ActiveSupportのString拡張(活用形)まとめ
"Invoice".tableize # => "invoices"
メール送信
手元のメール送信確認はmailcacherを使ったことがある
https://qiita.com/pocari/items/de0436c39ffc65647cf0
ActionMailer::Base.mail(to: "to@example.com", from: "from@example.jp", subject: "題名", body: "本文").deliver_now
メソッドの定義場所を探す
Hoge.method(:huga).source_location
sqlファイルをrails dbに食わせる
bundle exec rails db < my_db.sql
日付と時刻を扱う
t = Time.parse("2017/04/25 19:23:55"); p t # 2017-04-25 19:23:55 +0900
クエリ高速化
わかりやすい, Rails6はあまり知らない
https://texta.pixta.jp/entry/2016/02/10/180244
https://qiita.com/leon-joel/items/f26556c9e56833983856
rails consoleの再読み込み
reload!
find_each
わかりやすかった
https://blog.toshimaru.net/rails-find_each/#order%E4%BB%98%E3%81%8D-find_each
スクリプト実行
Rails機能を使いつつ単独のスクリプトを実行する。
bundle exec rails runner hoge.rb 'huga'
pry
わかりやすい
https://qiita.com/k0kubun/items/b118e9ccaef8707c4d9f
https://www.slideshare.net/cuzic/pry-repl