rails

Bulmaのカスタマイズ方法 with Rails Webpacker

昨日作った Twitter Video Downloader で利用したBulmaについてです。 Bulma: a modern CSS framework based on Flexbox いいですよね。 bootstrapにしろCSSのFrameworkはゴリゴリCSS書くのがつらいエンジニアとしては、とても有り難いです。 Customize方法 …

Twitterの動画をダウンロードするWebサービスを作った

最近サッカーが好きでTwitterのTimelineに流れる動画をダウンロードしたくて、 色々調べているうちに勢い余ってWebサービス化してしまいました。 今、workドメインが1円なんですよねー。 twitter-video-downloader rails 5.1.4 bulma 0.6.1 (css framework) …

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 や、今回も各…