日常

ケ・セラ・セラ

rails

encrypted_secrets についてのメモ

v5.1.0.rc2 を使ってみていた。encrypted_secrets について確認したことをいくつかメモしておこうと思います。 まあ主に使い方はここ railties/lib/rails/commands/secrets/USAGE を見れば書かれているのですが、簡単に補足を加えつつ日本語でいきます。 enc…

rails new skip-いろいろ して react_on_rails を使おうとた場合に遭遇したあれこれ

これは整理して書いておこうと思ってもう2ヶ月経ってしまったものなので、この際ちらかったままに公開だけしておこうというメモです。 意気込んで、 rails new app --skip-action-cable --skip-action-mailer --skip-bundle --skip-javascript --skip-listen…

RailsでRuby2.4のHash#compactを使うp-rがある

読みました。短くまとめます。 Hash#compact and Hash#compact! now part of Ruby 2.4 | BigBinary Blog これがマージされると、Ruby 2.4 で加わる Hash#compact / Hash#compact! を Rails でも使うようになる。 Use Hash#compact and Hash#compact! from Ru…

capybara, poltergeist, phantomjs で js: true なテストをする

save_and_open_page や save_screenshot する場合には、 html の charset が設定されていないと日本語が文字化けてしまいました。 そういう場合には書きましょう。 <meta charset="UTF-8" /> まず install phantomjs (Ubuntu での例です) $ wget https://bitbucket.org/ariya/phantom</meta>…

最近の rails3.2 のはなし

ruby 2.3 から加わった Hash#to_proc がある。 この影響で、rails 3-2-stable ではこのような修正が merge された。これを含む 3.2系のリリースはまだされていない。 Associations do not call .to_proc on Hash #25043 4-2-stable にも master にもこのよう…

Emoji に対応してみた

某サービスで Emoji を扱えるようにしてみた。 gemoji を使った。README を見ると大体やりたいことが出来た。 github.com

rails ActiveSupport 便利な String の活用形のメモ

[8] pry(main)> (:user_follows).to_s.singularize => "user_follow" [9] pry(main)> (:user_follows).to_s.pluralize => "user_follows" [10] pry(main)> (:user_follows).to_s.camelize => "UserFollows" [11] pry(main)> (:user_follows).to_s.classify =…

rails gravatar-ultimate を使う

email, password を入力してもらってユーザ登録できるやつで、 アイコンなど画像ファイルを自分のところで取り扱いたくない。 というケースで gravatar に頼る流れがあります。 https://github.com/sinisterchipmunk/gravatar 実装を見ると、サイズが指定で…

rails limitではなくtakeの使いどころ

limit 使えばいいし、take 使いどころ無いのでは?と思っていました。 先頭 1 件だけほしい時、Model.first すると、order by id ASC LIMIT 1 となります。 Model.limit(1) の場合、order by id しません。 Model.take も同様です。こういう時、take を使う…

Railsでnpmを使う今の所のやり方

自分の場合こうやっていますというものです。 Rails.root に普通に package.json を置き、普通に npm install する .gitignore で /node_modules などしておく application.js はどうしているかというと、 特に問題無ければ require_tree . で全部対象にすれ…

rails layout に対して個別に値を設定したい時

例えばこう、共通のレイアウトを適用したいけれど、タイトルだけは個々のものを使いたい。みたいな事例です。 # sample_layout.html.erb <html> <head> <title><%= yield(:title) %></title> </head> <body> <%= yield %> </body> </html> 個々の view で provide しました。 <%= provide(:title, @article.title) %…

rails layout を デフォルト(application.html.erb)から変更したい時

こんな風に使い分けることができる class ArticlesController < ApplicationController def without_layout render layout: false end def presentation render layout: "presentation" end end 某サービスにスライド機能つけようとしています

rails 単純なファイルダウンロード

pathto/down へのリクエストで、Rails.root/download/down.md を d.md というファイル名でダウンロードする適当なサンプル。 適当な Rails.root/pathto/down/down.md を事前に用意して、以下の感じです。 # config/routes.rb get "pathto/down" => "pathto#d…

rails 年度はじめ、年度末

こんな感じか today = Date.today beginning_of_fiscal_year Date.new((today << 3).year, 4, 1) end end_of_fiscal_year Date.new((today >> 9).year, 3, 31) end

Rails Devise使用時のフレンドリーフォワーディング

ブラウザから直接URL入力してあるページへ行こうとした時、 まだログインしていなければログイン画面を表示させる。というのはよくある処理だと思います。 そしてログイン後には、ログインする前に行きたかったところへ送ってあげるのが親切でしょう。 そう…

rails view に layout を適用したくない時

layout: false すればよい。 class HogeController < ApplicationController def index render layout: false end end

xx-rails gem を避けたい理由

xx-rails gem が中で利用している JS ライブラリのバージョンがいくつなのか誰も知らない。みたいなやつ。 いつでも最新バージョンにすれば良いかというとそうでもないし。 個人的にはこの辺りが理由です。

Rails の javascript で環境毎に定数管理したいとき

この間 rails でのちょっとした定数の管理 - 日常 というのを書いた。 サーバサイドではなく、javascript で development, production などの環境毎に定数を設定したい場合はどうするか。 たとえば連携する API の URL など、環境ごとに持ちたいことがあるだ…

rails でのちょっとした定数の管理

railsconfig/config や binarylogic/settingslogic を使うほどでもない。という場合によくやる方法です。 たとえば環境ごとに分けたい設定値があったとすると、 config/settings.yml などに設定値を環境ごとに書いて、 development: awesome_value: "dev" st…

rails force_ssl 関連

このように書くと https に強制される。 config/environments/production.rb config.force_ssl = true コントローラ個別に設定したい場合には、上記のように環境ごとのファイルには記載せず、よくこんな風にする。 class SampleController < ApplicationCont…

rails なるべく簡単に bootstrap を使う方法を考えてみた

ちょっと何かつくろう。そうだ bootstrap 使おう。となった時に、さくっと環境が作れないとどんどん腰が重たくなってしまいに動かなくなるという、何度もこういうことがあるのでよくない。どうするのが楽なのか考えてみた。 一応、辿り着いたところを書いて…

Rails log lotate したい

各環境のファイルで設定する。development ならこう。 config.logger = Logger.new("log/development.log", 'daily') weekly, monthly も指定できる。

cattr_accessor, mattr_accessor

また Devise のコードを読んでいたら mattr_reader というのを見つけた。 activesupport の機能で、 reader だけでなく writer, accessor もあり、他にも cattr_accessor があった。 cattr_accessor は attr_accessor のクラス変数版で、 class Foo cattr_ac…

Rails バリデーションエラーの特定に悩む時のこと

バリデーションエラーが起きてるけど、どこでだか分からない。 ログもエラーメッセージの表示も大味すぎてよくわからない。 こういうこと、特に他人が書いたコードをやむなく引き継いだりしたケースではよくある気がしている。 そういう時よく、こうやって A…

direnvとbundle install --binstubsでbundle execを省略する術

bundle install した場合、毎回 bundle exec と打つのは面倒だ。 alias で be とかにしても、それすら無い方が心地よい。 ただし bundle exec を省略するためにややこしいことはしたくない。ダーティなのもいやだ。 そんなことを思っていた僕はこの direnv +…

devise を Rails 4.1.5 以降で使うとき気をつけること

devise が盛り上がっているので小ネタ。hsbt さんの影響力を感じる。 まあこれなんだけど。 以前使ったコードを新しいプロジェクトに持ってくるとかして動かない。なんでっ?ってなる。なった。 過去のブログ記事とか見て写経したけど動かない。とかも普通に…

wardenのwikiは読みやすいと思っている

devise をあまりオススメしない記事をみて、それは自分も思う所なのです。 実際現在、使っている。なんでかといえば、初速がはやいから。すぐ作るために選択している。 いや、ちゃんとわかってないから devise 使うことで初速がはやいみたいな感じなんだろう…