ウェブサイトでデフォルトユーザアイコンを用意しないといけないときに使える SVG を書きました。 これを使えばいちいち画像を用意する必要はありません。
続きを読む SVG で作った デフォルトユーザアイコンKenji のすべての投稿
Rails: Cells 3 から Cells 4 への アップグレード時に遭遇したエラー
gem の Cells 3 を Cells 4 にアップグレードした際に遭遇したエラーと対処法を記録しておきます。 すべてではないです。 ここにある対処法は、 それぞれの Cell クラス に対して行ってもいいですが、 ApplicationCell
という親クラスを作ってそこに書き込むのが楽です。
対処した最終結果は Rails: Cells 3 から Cells 4 へのアップグレード に記載しています。
helper_method
がないというエラー
lib/devise/controllers/helpers.rb
で次のようなエラーが出ます。 そのとき私が使っていた devise のバージョンは 3.5.2 です。
undefined method `helper_method’ for XyzCell:Class
Cell
クラス に次のコードを追加します。
1 2 |
def self.helper_method(*) end |
なにもしないメソッドですが問題ありません。 Cells 3 の時は self.helper_method
を呼ぶ必要があったのですが、 Cells 4 からは 使わなくてもよくなり、 メソッドも削除されたそうです。
dom_class
でエラー
次のようなエラーが出た場合。
undefined method `dom_class’ for #<XyzCell:0x007ff36d4fecb0>
Cell
クラス に 次のコードを追加します。
1 2 3 4 5 6 7 |
def dom_class(record, prefix = nil) ActionView::RecordIdentifier.dom_class(record, prefix) end def dom_id(record, prefix = nil) ActionView::RecordIdentifier.dom_id(record, prefix) end |
数字の3桁区切り number_with_delimiter
がなくてエラー
Cell
クラス に include ActionView::Helpers::NumberHelper
を追加します。
select
タグ が使えなくてエラー
次のようなエラーメッセージが出ます。
private method `select’ called for #<XyzCell:0x007ff48f4febe8>
Cell
クラス に include ActionView::Helpers::FormOptionsHelper
を追加します。
参考: apotonick/cells Issue select form_helper doesn’t work in cells 4
東銀座 じゃのめ 500円 でうどん・天丼を食べる
東銀座 にある 銀座 じゃのめ 銀座三丁目店 にて、 500円 で天丼を食べてきました。 ものによって 390円 だったり 500円 超えたりする お店です。
ごはんが少ないように見えるかもしれませんが、器が深くてごはんもどっさり入っています。
続きを読む 東銀座 じゃのめ 500円 でうどん・天丼を食べるRails: Devise エラー undefined method `failure_app’ for nil:NilClass の対処法
API を作っていたとき、 次のようなエラーが出ました。 原因は devise gem でした。
NoMethodError (undefined method `failure_app’ for nil:NilClass)
環境
- Ruby 2.2.3p173
- Rails 4.2.4
- devise 3.5.2
原因
unauthorized のユーザに対して sign_in
を実行していました。
作成中の API では、 いちいちメールの確認をしなくてもログイン・利用はできるようにしておく方針だったため、 メール未登録のユーザでもログインする処理を記述していました。 そのため、 通常なら warden の上で unauthorized とみなされるユーザについてもログイン処理を行っていました。
対処法
config/initializer/devise.rb
で次のように設定を行うと解決します。
1 |
config.allow_unconfirmed_access_for = 2000.years |
ほかに、次の記述を devise で認証を行うモデルクラスに入れるという方法があります。 たとえば User クラスなど。
1 2 3 4 |
private def confirmation_period_valid? return true end |
意味を考えると 後者のほうが望ましいと思います。
confirmation_period_valid?
メソッド confirmation_period_valid?
は devise のモジュール Devise::Models::Confirmable
で定義されています。
銀座で毎日のランチを平均550円未満に抑える方法
銀座周辺で毎日のランチを平均550円未満に抑える方法を書きます。 ワンコインランチを探すというのも手なのですが、 今回は ワンコインではないランチを考えます。
PREMIUM PASS を買うと、毎日のランチを平均550円以下に抑えることができます。
仕組み
PREMIUM PASS vol. 3 があれば、 500円 のランチが 29回 食べられる計算になります。 (13:00 以降 でないと使えないものを除くと、 21回 食べられる計算になります。)
1か月のうち、 ランチを外で食べるのは (私の場合)だいたい 20回 です。 要するに 20日全日、 500円でランチを食べられることがわかります。
PREMIUM PASS vol. 3 の価格が 980円 ですから、 ( ( 980 + 500 times 20 ) div 20 = 549 ) 円 で毎日のランチが食べられる計算になります。
仮に PREMIUM PASS に載っているお店に行かなくても、 500円 のランチを食べるんだったら 平均して ランチのコストは同じになります。
470円 で食べられる蕎麦もありますが、 そういったものばかりではいやになる、 だけど高いランチはいやだという方におすすめの一冊です。
今は東銀座で働いていますが、 東銀座からでも徒歩で行ける範囲のお店が多く載っています。 銀座、銀座1丁目、新橋、東銀座あたりで働いている方におすすめです。
他のエリア
新宿など、他のエリアでも同じような冊子が売られています。 東京だけでなく他の都道府県のもありますので、「ランチパスポート」を Amazon で検索 してみてください。