Cookieに書き込む値を暗号化する
Railsから通常の方法でCookieに書き込む値は、平文となっているためCookieを盗まれると情報が丸見えになっています。これを回避するために、Railsにはsigned
というメソッドがあります。
cookies[:hoge_key] = hoge_value # 暗号化されない cookies.signed[:hoge_key] = hoge_value # 暗号化される
また、先ほど投稿した永続Cookieを作るpermanent
メソッドと組み合わせることも可能です。
cookies.permanent.signed[:hoge_key] = hoge_value # 暗号化される/20年後に有効期限
ホント↓このチュートリアル学べることがとても多い!
永続Cookieに値を保存する
Railsでは、公式ではありませんが暗黙の了解で「永続Cookie」=「20年後に有効期限の切れるCookie」としています。Cookieに値を保存するにはvalue
とexpires
を設定する必要があるので、一般的には「永続Cookie」に値を保存するという意味合いのコードは以下のように書きます。
cookies[:hoge_key] = { value: hoge_value, expires: 20.years.from_now.utc }
しかし、Railsコミュニティでは上記のようなコードを書くことが多いため、以下の様な短縮記法も用意されています。
cookies.permanent[:hoge_key] = hoge_value
上記のように書くと、自動的にCookieの有効期限が20年に設定されます。
印刷時に任意の要素を消す or 印刷時のみ要素を表示する
CSS初心者なので色々なところでつまずいていますw
.visible-print
クラスを使用すると、印刷時→表示・ブラウザ上→非表示 という要素を作成可能.hidden-print
クラスを使用すると、ブラウザ上→表示・印刷時→非表示という要素を作成可能
Bootstrapで作成したページを印刷するとリンクの中身が表示されてしまう問題
最初はRailsがなにか悪いことしてるのかと思いましたが、どうやらBootstrapの問題だったようです。
解決策は単純で、Bootstrap内で定義されている@printオプションを別の場所で打ち消してあげること。
GETのリクエストパラメータからutf8=を消す
URLをすっきりさせたかったので、この記事は非常に助かりました。
Dateフォーマットの範囲指定検索方法
Rangeを使ってエレガントに書ける。凄い!
Herokuへのデプロイでハマる
Herokuではsqlite3をサポートしていないため、開発環境(DBにはデフォルトでsqlite3を使用)をそのままデプロイするとハマります。
以下2つのファイルを弄った後、Herokuにプッシュするとうまくいきました。
Gemfile
group :development do ・ ・ ・ # 上の方に書いてあるsqlite3をここに移動し、開発環境でのみ使用する事を明言 gem 'sqlite3' end # (追加)本番環境ではsqliteではなくpostgreを使うように変更 group :production do gem 'pg' gem 'rails_12factor' end
database.yml
production: # 変更前 #<<: *default #database: db/production.sqlite3 # 変更後 adapter: pg database: db/production.pg