Ruby on Rails
はじめに 最近、Rails 5におけるActive Record Observerの代替ライブラリとして、Everettというものを作りました。 本エントリでは、このgemの紹介と作成のきっかけや工夫した点などを述べたいと思います。 Everettとは 概要 READMEの冒頭にも書いてあるよう…
はじめに 普段EC2インスタンス(Amazon Linux)にSSHをして開発しているのですが、E2Eテストの中で page.save_screenshot "screenshot.png" などとしてスクリーンショットを撮ると、日本語が表示されずにいました。 検索すると日本語フォントをインストール…
はじめに 先月、エラーページをAsset Pipelineで管理する - WEB SALADというエントリを書いたのですが、あの後「これはエラーページに限らずもっと一般化できるのでは」と思ってgemを作ってみました。 このエントリでは、このgemの紹介と使い方を説明したい…
はじめに Railsでエラーページをいかに楽に書いて管理するかを模索した結果、Asset Pipelineを使う方法が良さそうだったのでまとめます。 追記(2015/08/17) このエントリで提案した手法をgem化し、その使い方を解説したエントリを書きました。 よろしけれ…
はじめに RubyとRailsで、特定のバージョン下において適用したいパッチを書く方法を調べたのでまとめました。 実装例 以下の通りです。 if Gem::Version.new(RUBY_VERSION) >= Gem::Version.new('2.0.0') # Ruby 2系で適用したいパッチ end if Gem::Version.…
はじめに タイトル通りです。 最初は自分で実装しようと思ったんですが意外とめんどいことに気付き、色々探していたら該当の処理をよしなにやってくれるメソッドを見つけたのでまとめました。 Array#to_sentence Array#to_sentenceは、ActiveSupportのArray…
はじめに Railsでpreflightリクエストの処理を実装する機会があったのでまとめてみました。 preflightリクエストとは CORS(Cross-Origin Resource Sharing)という、originをまたいだAjax通信の際に発生するリクエストのことです。 発生条件など、詳しくは…
はじめに Railsでとあるサービスを実装しているときに、詳細画面でidが前後のレコードへのリンクをつけたかったのですが、ActiveRecordではそのようなメソッドが用意されていないようなので実装しました。 方針 基本的には次のリンク通りなのですが、5年前の…
はじめに Rubyで文字列操作だけでパス文字列を組み立てようとすると苦しいコードになりがちですが、Pathnameクラスを使うといい感じに書けることがわかったのでまとめました。 Pathnameとは Rubyの組み込みクラスで、パス名をオブジェクト指向っぽく扱うこと…
はじめに 現在パーフェクトRuby on Railsの10章を読んでいるのですが、そこに掲載されていたBasic認証のためのRack Middlewareの実装がしっくりこなかったので書き換えてみました。 実装 credentialsのチェックを別メソッドを切り出すことで、何をやっている…
はじめに ActiveSupportにHash#camelize_keysってあってもよさそうなのに、ないのか、、、— yasaichi (@_yasaichi) 2015, 3月 11 先日RailsでとあるAPIを実装していたときに、Hashの各キーをlowerCamelCaseに変換するメソッドがActiveSupportにないことに気…
はじめに 先日Ruby on Railsであるサービスの開発を行っていた際に、自作のクラスにto_hというインスタンスメソッドを実装する必要が出てきました。 このメソッドの要件は以下の通りです。 attr_readerまたはattr_accessorで設定したgetterメソッドの名前をk…
はじめに 若干旬が過ぎた感もありますが、Yoを使った「乃木どこが始まるよ」というサービスを先日リリースしました。 本エントリでは最初にサービスの簡単な紹介をしたあと、備忘録も兼ねて苦労した点について述べていきます。 サービス概要 乃木坂46の冠番…
概要 タイトル通り。備忘録も兼ねてまとめておきます。 Google::APIClient.newでエラーが出る NameError: uninitialized constant Googleって出てえっ?ってなったパターン(笑) これはGemfileで gem 'google-api-client' としか書いておらず、gemの読み込…
はじめに 最近Draper使ってview周りのコードを書いてるんですが、ほんと素晴らしいですよねこのgem。 で、model以外でも使えたらもっと便利なのにな〜と思いながら色々調べていたら、Draper::Decoratableモジュールをincludeすれば何でもdecorateできるとい…
はじめに Railsでコードを書いていて、ControllerやhelperでURLのクエリ文字列を組み立てる場面ってありますよね。 こうゆうとき、僕は今まで query = { hoge: 1, fuga: 2 } query.map{ |k,v| "#{k}=#{v}" }.join("&") とかやってたんですけど、これだと値が…
はじめに 先日、とあるAPIを作成していたときに 開発環境では、http://localhost:3000/api/users/1のように、パスの最初にapiをつける。 本番環境では、http://api.example.com/users/1のように、apiというサブドメインを利用するためパス内のapiは不要。 と…
概要 最近、ある文字列がIPアドレスとして適切かどうかチェックする方法を調べる機会があったので、その結果を備忘録としてここにメモしておきます。 実装 正規表現を考えるのは面倒だったので、Rubyの標準ライブラリであるIPAddrを使いました。 例 引数の文…
はじめに RubyやRailsで任意のオブジェクトが配列の要素かどうか調べる場合、普通、include?を使うと思います。 例えば、以下のような感じ。 ystk = "中田ヤスタカ" perfume = %w(あ〜ちゃん かしゆか のっち) perfume.include?(ystk) # => false 僕はtrueだ…
概要 RをRailsで動かすまでの簡単なチュートリアル。 誰かの役に立つかもしれないと思って書くことにした。 そもそもRをRubyで動かすには 主なライブラリが3つある。 RSRuby 実行速度は3つの中で最も速いらしいが、パスを通さないとだめだったり、 その他実…