rails

administrate のラベルを日本語化する

今日もthoughtbot/administrate tipsです。 default_locale を ja に変更すると、一部日本語化されますが、各columnのラベルはそのままです。 ちなみに、default の locales は以下。 administrate/config/locales at master · thoughtbot/administrate ソー…

Rails管理画面生成gem administrate でソート順を指定する

Dashboardのソート順を変更したいと思ったのですが、どうやらそれを設定するための機能は用意されていないようでした。 少し調べてみると、以下のissueで議論されていました。 Default order/sort of lists · Issue #442 · thoughtbot/administrate 対応方法…

acts-as-taggable-on のタグ件数に条件を追加する

acts-as-taggable-on を利用すると以下のように簡単にタグクラウドの実装が出来てしまいます。 mbleigh/acts-as-taggable-on: A tagging plugin for Rails applications that allows for custom tagging along dynamic contexts. <% tag_cloud(@tags, %w(css…

Rails の seed.rb に冪等性を持たせる

rake db:seed を何回やっても大丈夫なようにするには auto increment の管理が必要になります。 本番環境で何度も実行することは、ほぼあり得ないし、開発環境であれば直接DBをわさわさしちゃえば間に合うので、まともに実装する必要はないんでしょうが、少…

ActiveRecord::StatementInvalid: SQLite3::BusyException: database is locked

RailsでSQLite3 の lock timeout が発生したので少し調べて見ました。 (原因は複数transactionが発生してロックかかってただけです) まずは みんな大好きstackoverflow。 ruby on rails - SQLite3::BusyException - Stack Overflow 一時的な対策ではあるが…

Rails管理画面生成gem administrate を使ってみる

この手のものはrails_admin、Active Adminなどが有名ですが、 DSLを覚える必要があったり色々癖があって選択が難しいです。 どれを選ぼうか迷っていたら、thoughtbot/administrate というものを見つけました。 paperclip、factory_girlなどで有名な thoughtb…

Railsで配列の値を like or 検索する

like検索時に配列の値をorで簡単に複数検索できないものかと調べてみたら ReneB/activerecord-like というgemで実現できました。 How to use it 単一カラムでのlike words = %w(フロンターレ 中村憲剛) like_words = words.map{ |word| "%#{word}%" } puts P…

RailsでDBの値を暗号化する

DB保存時に個人情報的なやつは暗号化しておきたいという要望はよくあるかと思います。 今回はattr_encrypted というgemを利用してみました。 自前で実装するなら ActiveSupport::MessageEncryptor が利用できるようですのでこちらも少し試してみました。 ま…

WEB+DB PRESS Vol.94 Pumaについて

WEB+DB PRESS Vol.94作者: 藤原俊一郎,朽木拓,八木俊広,吉田太一郎,うらがみ,のざきひろふみ,うさみけんた,水嶋淳貴,佐々木健一,柴崎優季,前島真一,伊藤直也,遠藤雅伸,ひげぽん,海野弘成,はまちや2,竹原,WEB+DB PRESS編集部出版社/メーカー: 技術評論社発売…

WEB+DB PRESS Vol.93 Rails 5の特集が良い

WEB+DB Vol.93 WEB+DB PRESS Vol.93作者: 原田騎郎,吉羽龍太郎,松浦隼人,須藤涼介,生沼一公,森下雅章,前島真一,鍛治匠一,伊藤直也,のざきひろふみ,うらがみ,高山温,佐々木健一,わかめまさひろ,ひげぽん,遠藤雅伸,海野弘成,はまちや2,竹原,藤田正訓,WEB+DB PR…

ERBをHamlに置換する

手元のアプリでなんとなくERBを使っていたのですが、 Haml使いたくなったので、置換してみました。 dhl/erb2haml: Simple script to bulk covert ERB files in a Rails app to Haml 使い方 Gemfileに突っ込んでbundleすれば、以下のrakeタスクが実行できるよ…

webpack-rails を試してみる

Rails5.1ではWebpackが導入される - rochefort's blog で書いたように、Rails5.1 ではWebpackが導入されそうです。 DHHさんが言うことはだいたい正しいので、 これまで面倒そうだと毛嫌いしていたWebpackを試して見ることにしました。 最初に感想 Webpackを…

Rails5.1ではWebpackが導入される

ちょうど手元のRails アプリでsprockets捨ててみようかどうか調べていたところですが いよいよ公式にjQuery外してyarnとWebpack導入するという議論がされているようです。 これはなかなか大きい変更です。 超いいまとめ。 Rails5.1に向けてフロントエンド周…

logrotate.d のdebugモードがおかしい

Railsのログローテートは、Linuxのlogrotateで行う派なのですが、 久しぶりに設定してdebugモードで確認してみるとエラーが出て小一時間ほど嵌ってしまいました。 結果から言うと、logrotate のBugだそうです。 Bug #1320201 “behaviour in debug mode doesn…

acts-as-taggable-onのtagをRansackの検索対象に含める

違うアプローチを試して少しはまってしまいましたが、 とても簡単に association も考慮して検索することができました。 Ransack 賢いなぁ。 例 以下は、title と description と tag の like検索になります。 query = { title_or_description_or_tags_name_…

RansackのURLを変更する方法

ransack で複数カラムを検索する - rochefort's blog の続きです。 ransack で title と description カラムを検索するようにしたのですが、 URLが微妙です。 こんな感じ。 ?utf8=✓&q%5Btitle_or_description_cont%5D=test やりたいこと utf8を消したい q[ti…

ransack で複数カラムを検索する

activerecord-hackery/ransack を使ってみました。 Gemfileに書いて、検索ロジックをちょろっと変更して、viewをちょろっと修正すれば 検索画面がすぐできちゃう優れものです。 詳細はactiverecord-hackery/ransack 複数のカラムで検索させる方法 例えば tit…

Rails の require_dependency とは何か?

Rails Guide を見てみますが、いまいちピンとこないのでソースを見てみました。 http://railsguides.jp/autoloading_and_reloading_constants.html#require-dependency 先にまとめ require_dependency とは、production環境では require し development環境…

RailsのSQLiteで正規表現を使う

Postgres や MySQL では、書き方は違えど正規表現を使うことができます。 しかし、RailsのDevelopment(SQLite)で実行すると、エラーとなります。 SQLite3::SQLException: no such function: REGEXP SQLiteでのREGEXP こちらを見てみると SQLite3におけるREGE…

Acts-as-taggable-on を拡張する

タグの管理にmbleigh/acts-as-taggable-on を使っています。 非常に使いやすくて重宝しているのですが、一部のタグのみ他のテーブルと関連づけしたかったので 拡張してみました。 やりたいこと schema.rb acts-as-taggable-on を使うと以下のようなテーブル…

Rails 5.1 の新機能

Rails 5 の新機能おさらいしとこうと思ってググって以下のスライドを見ていたところ 思っていたよりも変更があってショック受けていたら、Rails 5.1 の資料でした。 フライングしちゃった気分だわ。 まだリリースされていないので、ご参考程度に。 Rails 5.1…

Railsのエラー画面は動的か静的か

Railsのエラー画面を静的なものにするか動的名ものにするかという話は、よく上がるかと思います。 Assetsを利用したいし、他言語化したいし、エラーコードでメッセージだけ出しわけしたいし、 というので動的エラー画面を選択することがあるかと思います。 …

Rails Tutorials 2週目を終えて

第3版となりパワーアップしたのを知ったので 9月中頃からちょっとずつ実施してきた Rails Tutorials ですが 1ヶ月ちょっとで終えることができました(ちょっと掛かりすぎた)。 Rails Tutorial 第3版 Rails Tutorial 第3版 第4、5章 Rails Tutorial 第3版 第…

Rails Tutorial 第3版 第12章

今回は has_many :through の実例が学べます。 following, followers, followed など間違えやすいので整理してから進めると良いです。 Ruby on Rails チュートリアル:実例を使って Rails を学ぼう の2周目です。 第12章 ユーザーをフォローする | Rails チ…

RailsのsorceryでBrute force対策を行う

認証部分だけですが、ログインロック機能がお手軽に実装できます。 moduleとして組み込んで一部設定変更すればokでした。 Brute force protection · Sorcery/sorcery Wiki ざっくり 実施方法は、基本githubを見てもらえれば良いです。 rails g sorcery:insta…

acts-as-taggable-on と tag-it でタグの補完入力(Rails)

こんな感じのやつを作りました。 使うのは以下です。 タグのjQueryプラグインはいろいろありますが、tag-it を選択した理由は自動補完機能が付いているからです。 acts-as-taggable-on tag-it ざっくり acts-as-taggable-on は公式を参照すれば良いので省略…

Rails + Bootstrap 時のflashのkeyについて

第7章 ユーザー登録 | Rails チュートリアル でも述べられていますが Bootstrapには、以下の4つのalertsが用意されています。 success, info, warning, danger Bootstrap Alerts 通常、Railsでは notice、warningを使いますが Bootstrap 使うときは、上記4種…

Rails Tutorial 第3版 第11章

Ruby on Rails チュートリアル:実例を使って Rails を学ぼう の2周目です。 第11章ユーザーのマイクロポスト | Rails チュートリアル 第11章ユーザーのマイクロポスト 本格的にWebアプリっぽくなってきました。 carrierwave, mini_magick, fog や、今回も各…

masonry-rails で Pinterest風Webアプリを作る

※ mansory-rails で使用されている mansory の version が低いため現在は未使用。Responsive で利用する場合は、個別にmansoryを導入する必要があります。 Pinterest風のサイズの異なるグリッドをおしゃれに複数並べて ブラウザリサイズ時に再配置してくれる…

Rails5ではautoload_pathsがproductionでは有効でない!

A Guide for Upgrading Ruby on Rails — Ruby on Rails Guides を見てみると、こんなことが書かれていて驚きました。 Autoloading is now disabled after booting in the production environment by default. 回避方法も一応用意されてはいます。 For the va…

Rails Tutorial 第3版 第10章

Ruby on Rails チュートリアル:実例を使って Rails を学ぼう の2周目です。 第10章 アカウント有効化とパスワード再設定 | Rails チュートリアル 第10章 アカウント有効化とパスワード再設定 アカウント周りの実装が学べます。 個人的にはメール送信のテス…

Rails Tutorial 第3版 第9章

Ruby on Rails チュートリアル:実例を使って Rails を学ぼう の2周目です。 第9章 ユーザーの更新・表示・削除 | Rails チュートリアル 第9章 ユーザーの更新・表示・削除 フレンドリーフォワーディングの実装(ログイン前にアクセスしたURLにログイン後に…

Rails Tutorial 第3版 第8章

Ruby on Rails チュートリアル:実例を使って Rails を学ぼう の2周目です。 第8章 ログイン、ログアウト | Rails チュートリアル 第8章 ログイン、ログアウト sessionを利用したログイン機能の実装。 cookieを利用した永続化。 そのあと、ユーザーが選択で…

Rails Tutorial 第3版 第7章

Ruby on Rails チュートリアル:実例を使って Rails を学ぼう の2周目です。 第7章 ユーザー登録 | Rails チュートリアル 第7章 ユーザー登録 メインはユーザ登録にまつわる、form関連のお話です。 ようやくwebアプリっぽくなってきました。 以下、その他気…

Rails Tutorial 第3版 第4、5章

Ruby on Rails チュートリアル:実例を使って Rails を学ぼう の2周目です。 第4章 Rails風味のRuby 見た目整える回です。 cloud9 は emmet も使えて気持ちよくcodingもそれほど苦になりませんね。 シンボルにハイフンが使えない というのは、知リませんでし…

Rails Tutorial 第3版

気がついたら第3版が出ていたんですね。 Ruby on Rails チュートリアル:実例を使って Rails を学ぼう 上記ページ中頃に関連したスライドが埋め込まれてますが、 個人的には、Cloud9、MiniTest あたりが良いなと思いました。 特に初心者(特にwindowsユーザ…

Railsのrubocop.ymlを見てみる

Rails本体にrubocopが導入されているの知ってました? 私はrails commit log流し読み(2016/08/07) - なるようになるブログ を見て知りました。 railsの.rubocop.ymlはこちら 見てみたところ、ほぼ納得の設定です。個人的にもこれに寄せていきたいと思います…

libv8とrubyracerについて

今日のyak shaving。 とあるRailsプロジェクトを動かそうと bunlde install してみたところlivb8のinstall時にエラーとなりました。 OS はEl Capitanです。 エラー抜粋: 2 errors generated. make[1]: *** [/Users/rochefort/.rbenv/versions/2.3.0/lib/rub…

sorceryでpassword reset機能を実装する

こちらも公式wiki通りやれば、大体できます。 Reset password · NoamB/sorcery Wiki 1か所だけ修正 Missing host to link to! Please provide the :host parameter, set default_url_options[:host], or set :only_path to true が出るのでenvironmentsに以…

Railsの認証にsorceryを使う

認証といえば devise がよく使われていますが、富豪的なのでもう少しsimpleだという sorcery を使ってみました。 ちょろっと触った感じでは、お手軽で良いです。そのうちソースも読んでみます。 認証実装 Simple Password Authentication · NoamB/sorcery Wi…

ActiveAdminをちょろっと触ってみる

Web+DB Press(vol.85) Railsらくらくテストデータ準備を見ていて 触ろうと思うけど「後でやる」状態だったActive Admin の紹介がされていたので ちらっと触ってみた。 Web+DBのこの記事にちょいちょい誤字があるので注意が必要。 activeadmin/deviseのinstal…

Rails4.2の新機能

Riding Rails: Rails 4.2.0 beta1: Active Job, Deliver Later, Adequate Record, Web Console 公式blogから。 Active Job, ActionMailer #deliver_later Active Jobが追加。その名の通りjob que。4/4.1ぐらいから入るかもというのがようやく入ったようです…

Upgrading to Rails4 がとてもよい

書店に行ったらまだ未発売の パーフェクト Ruby on Rails が並んでいたので購入してみました。これから読んで行きます。楽しみ。 さて本題 Upgrading to Rails 4 Rails4絡みの記事 をいくつか書いてますが、いろいろ知らなかったことがあったので、個人的に…

ActionController::Live を試す

Rails4から追加されたこの機能を使うとstreamingっぽいことやpush配信ぽいことが可能です。 Upgrading to Rails 4 の中で ActionController::Live のsampleコードが記載されていたので試してみました(P.62あたり)。 準備 thread-safeなwebサーバであるpumaな…

ymlを読み込んでkeyをHashのシンボルとして扱う(deep_symbolize_keys)

こんなymlがあったとして #settings.yml twitter: consumer_key: 'aaaaaaaaaaaaa' consumer_secret: 'bbbbbbbbbbbbb' oauth_token: 'ccccccccccccc' oauth_token_secret: 'ddddddddddddd' settings[:twitter][:consumer_key]みたいに扱いたく きっとActiveSu…

Rails 3.2.17, 4.0.3 and 4.1.0.beta2 have been released!

Riding Rails: Rails 3.2.17, 4.0.3 and 4.1.0.beta2 have been released! CVE対策です。定期的にでますね。 CVE-2014-0080 Data Injection Vulnerability in Active Record (CVE-2014-0080) - Google グループ PostgreSQL に配列として突っ込むときに、inje…

Ruby on Rails 4.1 Release Notes #6(Active Record)

Ruby on Rails 4.1 Release Notes — Ruby on Rails Guides 6章は、Active Recordです。たくさん修正が入っています。 6 Active Record 6.1 Removals depricationのremove祭りです。 だいたいがそんな機能あったんかって感じです。 ・SchemaCache methods: pr…

Ruby on Rails 4.1 Release Notes #5(Action Mailer)

Ruby on Rails 4.1 Release Notes — Ruby on Rails Guides 5章は、Action Mailerです。 主な機能としては1個だけしか記載されていません。(previewはMajor Feature) 5 Action Mailer 5.1 Notable changes Action Mailer message の生成時間をロギングするよ…

Ruby on Rails 4.1 Release Notes #4(Action Pack)

Ruby on Rails 4.1 Release Notes — Ruby on Rails Guides 4章は、Action Packです。 4 Action Pack 4.1 Removals ・Rails application fallback for integration testing ActionDispatch.test_app を代わりに使えとのことだが コミットログ を探して見てみ…

Ruby on Rails 4.1 Release Notes #3(Railties)

Ruby on Rails 4.1 Release Notes — Ruby on Rails Guides 3章は、Railtiesです。 3 Railties 3.1 Removals ・rake update:application_controller 2.3からの移行用に用意されたものなので無くなっているそうです。 ・Rails.application.railties.engines ・…