よく忘れることなのでメモしておきます。
application.js.coffee
Rails では あらかじめ application.js が用意されていますが、 これを coffeescript の形式にしたいと思うことがよくあります。 そういうときは次のように 上部のコメントアウト //
を #
に書き換えます。
|
# This is a manifest file that'll be compiled into application.js, which will include all the files # listed below. # # Any JavaScript/Coffee file within this directory, lib/assets/javascripts, vendor/assets/javascripts, # or vendor/assets/javascripts of plugins, if any, can be referenced here using a relative path. # # It's not advisable to add code directly here, but if you do, it'll appear at the bottom of the # compiled file. # # Read Sprockets README (https://github.com/sstephenson/sprockets#sprockets-directives) for details # about supported directives. # #= require jquery #= require jquery_ujs #= require turbolinks # require_tree . |
最後の require_tree
は意図的に無効にしています。 余計な javascript まで読み込むので。
こちらは Rails 4.2.5, Ruby 2.0.0 で動くことを確認しています。
また、 Rails の変数・定数を使いたい場合に application.js.erb にしたこともあります。
Ruby で 小数点以下第n桁で切り捨てる方法をメモしておきます。
0.81235 などのリテラル (Float) には floor という関数があり、 小数点以下の切り捨てが可能ですが、 小数点以下の桁を残して切り捨てることはできません。
環境
- Ruby 2.2.3p173
- OS: Ubuntu 15.04
続きを読む Ruby 小数点以下第n桁で切り捨てる方法 →
ウェブサイトでデフォルトユーザアイコンを用意しないといけないときに使える SVG を書きました。 これを使えばいちいち画像を用意する必要はありません。
続きを読む SVG で作った デフォルトユーザアイコン →
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
クラス に次のコードを追加します。
|
def self.helper_method(*) end |
なにもしないメソッドですが問題ありません。 Cells 3 の時は self.helper_method
を呼ぶ必要があったのですが、 Cells 4 からは 使わなくてもよくなり、 メソッドも削除されたそうです。
参考: apotonick/cells Issue Not working with react-rails
dom_class
でエラー
次のようなエラーが出た場合。
undefined method `dom_class’ for #<XyzCell:0x007ff36d4fecb0>
Cell
クラス に 次のコードを追加します。
|
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 |
参考: apotonick/cells Troubleshooting
数字の3桁区切り number_with_delimiter
がなくてエラー
Cell
クラス に include ActionView::Helpers::NumberHelper
を追加します。
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
で次のように設定を行うと解決します。
|
config.allow_unconfirmed_access_for = 2000.years |
ほかに、次の記述を devise で認証を行うモデルクラスに入れるという方法があります。 たとえば User クラスなど。
|
private def confirmation_period_valid? return true end |
意味を考えると 後者のほうが望ましいと思います。
confirmation_period_valid?
メソッド confirmation_period_valid?
は devise のモジュール Devise::Models::Confirmable
で定義されています。
A Life Summary of an Gypsy