Rails

Rails5からコールバック処理を停止する方法が変わった

今知ったので書く。これまでActiveRecordのコールバック内でfalseを返していれば処理が停止していたが非推奨となり、停止したい場合はthrow(:abort)を呼ぶ方法に変わった。 Deprecated returning false as a way to halt Active Record callback chains. The…

Rails Migration versioningと5.1での変更点

Rails 5.0で導入されたMigration versioningでは、Migrationを作成する際にSuperClassにバージョンを指定することで挙動をコントロールできるようになりました。 Version the API presented to migration classes, so we can change parameter defaults with…

Rails 5.1 Encrypted secretsの使い方

Rails 5.1がリリースされました。 Ruby on Rails 5.1 Release Notes — Ruby on Rails Guides待望のsecrets.ymlの暗号化が取り込まれているので早速使用してみました。 暗号化されたsecrets.yml生成 $ rails secrets:setup生成されるファイル config/secrets.…

Rails5のAPIモードではRack::MethodOverrideがデフォルトでは無効

Rails5のAPIモードを利用してAPIを作っているがHTTPメソッド PUTでの通信がうまくいかなくて調べた結果判明した。 middleware.use ::Rack::Runtime middleware.use ::Rack::MethodOverride unless config.api_only middleware.use ::ActionDispatch::Request…

Rails+MySQLでPRIMARY KEYをbigintにする

昔bigintを指定する際はintegerのlimitを5以上(8にすることが多かった)にしたり、主キーをbigintに変更するにはSQLを直接書いたり少々面倒だった記憶が残っているが、さすがに今はそんなことしていないだろうと思い調べた。結論を言えばこれだけでよくなった…

Ruby2.2以降でjson gem 1.8.1がインストールできない件の対応

結論 json 1.8.2以降を使用する 上記IssueでRuby2.2対応は1.8.2含まれたことがわかる。 表示されるエラー 恐らくrb_new_strの引数の数が変わった為エラーになっていると推測するが、Ruby2.2から変更になったという確かなソースはまだ見つけていない。 Instal…

Asset Pipelineで特定のファイルを除外する「stub」ディレクティブ

sprocketsというgemが担っている部分なのでsprocketsのstubディレクティブの説明になる。 stubディレクティブはsprockets v2.2.0から実装された機能。Railsだと下記の様な記述があって/app/assets/javascripts/以下のファイルを全てコンパイルして使用するよ…

jquery-railsデフォルトの設定ではjQuery1系しか読み込まない

jquery-railsで読み込まれているjQueryを何気なく見たら1.11.2を使用していて2系にバージョンアップするにはどうしたらいいのか調べたら公式に書いてあった。 If you want to use jQuery 2, you can require jquery2 instead: //= require jquery2 //= requi…

Rails4.2 Webrickでproduction環境動作させるには

本番環境でWebrickで運用することはまず無いと思うが、開発時にproduction環境で動作を確認したいことがあったが少し設定の必要があった。 まずAsset Pipelineを使用するのでrake assets:precompileをしておく必要がある。 ApacheやNginxで動作させる場合に…

Rails4.2+Deviseでproductionで起動するとDevise.secret_key was not set.

developmentだと問題なく動いていたがproductionで動かしてみたら掲題の通りの例外が発生。 このメッセージを表示している構文はこうなっている。掲示されているsecret_keyはランダム生成されているものだとわかる。 def raise_no_secret_key #:nodoc: raise …

Railsで行うBasic認証

Rails3.1以前は authenticate_or_request_with_http_basic メソッドをbefore_filter内で呼ぶなりして実装していたがRails3.1にて http_basic_authenticate_with クラスメソッドが追加された。 #270 Authentication in Rails 3.1 - RailsCastsActionControlle…

RSpec-Rails3.1以降ではspec/supportを自動的にロードしない

factory_girl_railsのSyntax追加をいつも通りspec/support/factory_girl.rbを作成したが有効にならないので調べた。ChangeLogに記載されていた。 Update rails_helper generator to allow users to opt-in to auto-loading spec/support files instead of fo…

Rails4.2から追加されたフレームワークActiveJob

Rails4.2から新しいフレームワークとしてActiveJobが取り込まれ、バックエンドを気にせず実装を行えるようになった。 Ruby on Rails 4.2 Release Notes — Ruby on Rails Guides#ActiveJobバックエンドにはResque、Delayed Job、Sidekiq等が選択できる。 conf…

guard-rspecとspringの連携

既にRailsではspringがデフォルトで導入されている。 当然rspecを使う際にもspringを活用したいので方法を調べた。guard/guard-rspecgithub.com guard-rspecにOptionsとして紹介されているspringを用いた場合のGuardfileの書き方。おお簡単じゃんということ…

Rails4.2 MinitestをRSpecに変更する

Railsプロジェクトを新規作成する際下記オプションを使用するとMinitestを除いたRailsプロジェクトが作成される。 $ rails new hoge -Tプロジェクト開始後途中でMinitestからRSpecに変更したくなった場合は何をすればいいのか? テストコードの移植等には触…

Rails4.2からNokogiriに依存するようになってた

Rails4.1からRails4.2にバージョン上げようとGemfile修正してbundle update叩いたらNokogiriのインストールでこけた。 確かにNokogiriをインストール準備はしてないから落ちるのはわかるんだけどいつから依存するようになったの?答えは4.2から。HTMLサニタ…

Mavericksでtherubyracer0.10.2のビルドが失敗する

Installing with ruby 2.0.0-p195 on Mavericks · Issue #261 · cowboyd/therubyracer · GitHub 上記Issueに書かれているとおりだが0.12.0なら治っているからそれを使えばよい。マーベリックス入れた時のメモにしかなかったからここにも書いとく。

RAPNSはRpushに名前が変わりました

RAPNSはiOS,Android,WindowsPhone等のプッシュ通知サービスのプロバイダ側の機能を提供しているプラグインで丁度触っているところだったからびっくりしている。 RAPNS HAS MOVED. It is now called Rpush, the repository is here: https://github.com/rpush…

Rails技術者認定ブロンズ試験合格しました

トップページ | Rails技術者認定試験運営委員会 Rails技術者認定シルバー開始前に受験しておこうと思いまして受けまして合格しました。 Rails3なんですよね。

capistrano-extのmultistageがcapistrano本体に取り込まれていた

情弱であるので今日知ったところです。https://github.com/capistrano/capistrano/blob/master/CHANGELOG ## 2.10.0 / Febuary 19 2012~略~Includes multistage, without `capistrano-ext`. `require 'capistrano/ext/multistage'` (fixed by Lee Hambley) …

ActsAsParanoid+CarrierWave使用時で論理削除した際に画像ファイルを消さないようにする

ActsAsParanoidを使用してdestoryをコールするとレコードを論理削除してくれるのですが、 CarrierWaveで指定しているafter_destoryのコールバックが実行されてしまい画像が消えてしまいます。 今回は、論理削除する際に画像を残したかったので調べました。gi…

ActiveRecordのCallbackのデバッグの仕方

公式ドキュメントに載ってるのを教えてもらいました。 ActiveRecord::Callbacks _create_callbacks _validate_callbacks _update_callbacks _save_callbacks _destroy_callbacks 上記クラスメソッドを実行するとトリガー毎のコールバックのインスタンスが取…

ActiveAdmin scopeのI18n設定

ja.active_admin.scopes.scope_name に設定すればよい

acts_as_paranoidとrails3_acts_as_paranoid

acts_as_paranoidはRailsで論理削除を使う際に便利なプラグインですが既に更新されておらずRails3系に対応しているのはrails3_acts_as_paranoidという別のライブラリです。 rails3_acts_as_paranoidのバージョンが0.4.0に上がった時に作者がacts_as_paranoid…

lazy_high_chartsを使って円グラフを表示する

Highchars JSをRailsで使うlazy_high_chartsを使って円グラフを表示する。 https://github.com/michelson/lazy_high_charts/ Railsでグラフを作成するにはgruffというgemもありますがこちらはサーバサイドでグラフをごりごり作った後表示させるのに対し、 Hi…

jquery-fileupload-railsでドラッグアンドドロップによるファイルアップロード

ドラッグアンドドロップでファイルをアップロードする方法について調べてHTML5 FileAPIをjQueryと絡めて使うのがよさそうだなという結論に至った。 理解するのに時間かかりそうな感じ。javascriptというかイベント駆動というかそういうところ苦手すな。勉強…

Ruby2.0.0-p0でRails3.2.12を動かすとModel#dupで落ちる

Railsのissuesに4ヶ月前に挙がっていた。3.2.13には適応されているので3.2.13を使うようにした。 https://github.com/rails/rails/pull/8405

FactoryGirlのTraits知らんかったいいな

TraitsTraits allow you to group attributes together and then apply them to any factory. factory :user, aliases: [:author] factory :story do title "My awesome story" author trait :published do published true end trait :unpublished do publis…

Sunspot::Railsが提供するClassMethodsとInstanceMethods周り

後で絶対ハマると思ったので書いておく。Sunspot::Railsを使うとSunspot::Rails::Searchable::ClassMethodsとSunspot::Rails::Searchable::MethodsがActiveRecordにそれぞれextend,includeされる。Model.indexとModel#indexの動作が違い過ぎて結構びっくりし…

assets.compress = trueの時にスラッシュハック使ってるところがあると落ちる

プロパティの前に/(スラッシュ)を書いて行うハックでIE6,7のみに適応させる記法。 p { /font-size: 12px; } 多分こういう奴。precompileする時にcompressがtrueだと落ちるから別のハックにするとか対応が必要今回はアスタリスクハックを代替として使うことで…