読者です 読者をやめる 読者になる 読者になる

Rails

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だと落ちるから別のハックにするとか対応が必要今回はアスタリスクハックを代替として使うことで…

ActiveModel::Dirty#attribute_wasを知らなかったので覚えた

古い値退避させておかなくてもええんやな! user = User.first user.name #=> "hoge" user.name = 'fuga' user.name #=> "fuga" user.name_was #=> "hoge"

全てのレコードを表したActiveRecord::Relationを得るにはscopedを使う

必要になる場面があったんだけど今まで知らなかったのでメモ Model.scoped.class #=> ActiveRecord::Relation # allだとArrayが得られるので以降にscopeが使えぬ Model.all.class #=> Array 参考リンク Rails で十分に活用されていなくてもったいない Active…

valid?をfalseにしたくてerrors.addするのは何の意味もない

RSpecでvalid? #=> falseを期待したくてerrors.addするみたいなことやってたんだけど ずっとtrueなのよ。もうなんなの!と思うじゃない そこで、valid?何やってるか見に行くじゃない。そしたらなんなの! activemodel-3.2.9/lib/active_model/validations.rb…

Deviseを継承したControllerのSpec

Deviseのカスタマイズがしたくて継承してController作ってSpecからリクエストしたら怒られたのです Failure/Error: get 'new' AbstractController::ActionNotFound: Could not find devise mapping for path "/users/sign_in". Maybe you forgot to wrap you…

RSpecでrender partialのテスト

describe 'GET "hoge"' do before do get :hoge end it { response.should render_template(partial: '_hoge') } end

Gemfileでのバージョン指定よくわからないやつ

公式のドキュメントに書いてあった http://gembundler.com/gemfile.html The specifier ~> has a special meaning, best shown by example. ~> 2.0.3 is identical to >= 2.0.3 and 2.1 is identical to >= 2.1 and 2.2.beta will match prerelease versions…

attr_accessibleのrole毎のテスト

Rails3.1からattr_accessibleにasでロールを指定できるようになっていますが、そこのテストModel # -*- coding: utf-8 -*- class User < ActiveRecord::Base attr_accessible :name attr_accessible :name, :active, as: :admin end 例えば管理者はユーザが…

ActiveAdminでのskip_before_filterの設定

下記参照 http://stackoverflow.com/questions/7591310/skip-before-filter-with-active-admin config/initializers/active_admin.rbにbefore_filterについての記述があるのでここに書く # == Controller Filters # # You can add before, after and around …

RSpec RailsのAnonymous controllerが便利

全てのcontrollerでこのbefore_filterを実行したいという時によく継承元のApplicationControllerで実施することがあります # -*- coding: utf-8 -*- class ApplicationController < ActionController::Base before_filter :check private def check redirect…

DeviseのLockable moduleについて少し調べた

DeviseはRailsで使用出来るユーザ認証プラグインです。 少しカスタマイズしようとすると面倒面倒という評判聞きませんが今のところまだ面倒な場面に出くわしていないので幸運のようです。 Deviseは12つのモジュールで構成されていますがその中のロック系の実…

ActiveAdminの0.5.0がリリースされていたので更新した

ActiveAdminのgithubをみたら0.5.0がリリースされていたので更新しました。 結構うれしいのはCHANGELOGのこの部分ですね。 All CSS is now encapsulated under the body.active_admin class. This may change the precedence of styles that you created to …

Twitter風なAjaxページネーションをKaminariで実現する

Twitter風と言っているのはMoreなリンクがある(かまたはオートページャライズ)でどんどん次のページの要素がたされていくようなページネーション。Kaminariでの実現方法なのだけどStackOverFlowに同じような質問をしている人がいて、それにKaminariの作者の…

Rails3でのAjax独自コールバック関数

jquery-ujsあたりにこの辺が定義されているので見ておくとよさそう ajax:beforeSend ajax:loading ajax:success ajax:error ajax:complete

Rails3.2でjQueryUIを使う為にやること/モーダルダイアログの使い方

モーダルダイアログが手軽に使えそうだったのでjQueryUIを試してみました。 インストール jquery-ui-railsというgemを使いました。 https://github.com/joliss/jquery-ui-rails Gemfile group :assets do # 略 gem 'jquery-ui-rails' # 追加 end JS/CSS/Imag…

KaminariのAjaxページネートが簡単すぎた

NEXTしたら要素がどんどん追加されてくようなのを作りたかったviews <div id="lists"> <%= render 'hoge' %> </div> <%= paginate @hoges, remote: true %>partial <ul> <% @hoges.each do |hoge| %> <li><%= hoge.name %></li> <% end %> </ul>js.erb $('#lists').append("<%= escape_javascript(ren…

ActiveAdminで遭遇したちょっとした事

ActiveAdminを使っていてなんか困ったことがあったらGoogle先生に頼む前に一旦issuesみてみるといいかもしれない。案外議論されてる Commentモデルが追加できない $ rails g active_admin:resource comment create app/admin/comments.rbエラーが出るように…

SunspotとActiveAdminを一緒に使う時は気をつけよう

SolrがバックエンドのRailsで利用できる全文検索ライブラリSunspotだがActiveAdminを使う時は注意。 何かというとActiveAdminにはMetasearchという全文検索ライブラリに依存していて一緒にインストールされるが 拡張の仕方が結構似てて下手すると競合するっ…

Rails3の管理画面プラグインActiveAdmin

管理画面プラグインのactive_adminについて軽く調べたのでそのまとめ Github https://github.com/gregbell/active_admin Doc http://activeadmin.info/documentation.html Demo http://demo.activeadmin.info/admin ドキュメントが整備されているのでドキュ…

Push Notificationのプロバイダ側のプラグインを変更した

Apns4rを使っていたけどフィードバックサービスのところの実装がまだ完成してなくて、自分でやろうとしたんだけどOpenSSL周りの仕組みよくわからなかったので実装されているプラグインを使うことにした。 jpoz/APNS · GitHub Githubのソースが最新。Gemでイ…

iPhoneでのPush Notification(プッシュ通知)の実装方法メモ

公式ドキュメント(日本語) https://developer.apple.com/jp/devcenter/ios/library/documentation/RemoteNotificationsPG.pdf ※PDFファイル 参考リンク 実装/準備 【iPhone】Push Notificationの実装方法 | iPhoneアプリ開発で稼げるのか 大いに参考にさせて…

Rails2系でGuard,Sporkを使ったBDDの自動実行環境を作る

Rails2系ではautospecを使ってやっていたけどGuardとSporkを使ったほうがいい気がしたので。 Install インストールする必要のある物、及びバージョンは下記サイトを参考に Ruby1.9.3 + Rails2.3.14 + rspec + guard + spork でテスト - 鶏肉がいいよね。 rsp…