redirect先のURLを取得するスニペット
Net::HTTP.get_response(URI.parse(#{url}))["Location"]
railsでDateクラスを検索条件に使う方法
railsのActiveRecordでdatetime型を検索する場合、検索条件には
TimeインスタンスかActiveSupport::TimeWithZoneインスタンスが指定できます。
日付の区切りを指定したい時などにDateインスタンスを条件に使えると便利なのですが、
こちらはActiveRecordの検索条件としては許容されていません。
ですが、
Date.today + 0.hours
といった具合に、時分秒を増減することで、
ActiveSupport::TimeWithZoneへの型変換が行われ、
検索条件に使えるようになります。
余談ですが、railsはdatetime型に保存する時はutcで保存する流儀ですが、
Time.now.utc
cronでbundlerとrvmを使う
cronのコマンドの最初にこれを実行しておくと、cronで対話型シェル同様にbundlerとrvmを使ったプログラム実行ができます。
source $HOME/.rvm/scripts/rvm; rvm #{ruby version};
utcで保存しているDATETIMEカラムの中身をJST(Tokyo)で表示する方法
.in_time_zone('Tokyo')
を使って都度JSTに変換します。
例
Book.updated_at.in_time_zone('Tokyo').to_s
rails上でカラムの型を取得する
Bookを、booksテーブルを表すActiveRecordモデルだとすると、
Book.columns_hash['isbn'].type
で、isbnカラムの型を取得できる。
戻り値はシンボルで、
:string :integer :float :datetime
などがある。
【正規表現】否定先読みと否定戻り読みを使って、重複なく、同一文字が続く箇所を指定する
「t」が3文字以上続く箇所のみをピックアップする例
(?<!t)t{3,}(?!t)
単純に
t{3,}
だと、
tttt
という文字列の1文字目から始まる「tttt」と2文字目から始まる「ttt」の両方にヒットしてしまう
irbで式評価値の出力を一時的に抑制する
conf.echo = false
戻すには
conf.echo = true
ActiveRecordeのwhereメソッドでlikeを使う
Book.where('tag = ?', tag_b)
これを↓こうするとlikeが使えます。
Book.where('tag like ?', "%#{tag_b}%")
Book.where("tag like '%?%'", tag_b)
とか
Book.where('tag like ?', tag_b)
とかだと動きません。
直感的じゃないのでwhere以外で実現した方が良いかもしれません。
Net::HTTPのリクエスト/レスポンスの中身を表示
http.set_debug_output $stderr
get/postでハマった時はこれをon!