約束の地

キャロの想い出

Ruby

公開した gem を取り下げたいときに実行するコマンド

結論 gem yankコマンドを使う。以下はその例です。これでyour_gane_nameという gem の、バージョン1.2.3が取り下げられます。 $ gem yank your_gem_name -v 1.2.3 補足 上記コマンドにより全てのバージョンが取り下げられても、取り下げられたという事実は残…

Ruby でメール送信する際に使う mail gem では BCC を指定できない

結論 標題のままですが、bccを書いても無視されます(エラーにはならない)。 無視される例 以下の例ですとhiroshi@bar.comにメールは届きません。が、エラーにはなりません(BCCを無視してちゃんと送信される)。 require 'mail' mail = Mail.new do from '…

Ruby でファイル名やパス名を扱う場合は Pathname クラス を使うと楽

Fileクラス(File.dirnameメソッド)などを使うよりも直感的で楽です。特に、相対パスと絶対パスを考慮しなければいけない場合に絶大な威力を発揮します。

rbenv の global と local の違い

rbenv rbenvはRubyのバージョンを行き来するのにとても便利ですが、globalやlocalや、はたまたrbenvが使わないユーザの場合でどのように挙動が違うのかを記します。

Active Record で JOIN (joins) した際のプチハマり案件

(本質的な)結論 単数形と複数形を意識する。

Twitter のタイムラインから画像を根こそぎ取得する collect_twitter_media という gem をリリースしました

collect_twitter_media の概要 Twitter の自分のタイムラインにある添付画像を根こそぎ取得してしまうという gem です。

Amazon.co.jp の価格情報を取得する amazomania という gem をリリースしました

概要 Amazon.co.jpの商品の価格一覧を取得できるgemです。

RSpec でモックを使う方法を簡潔に

結論(流れ) doubleメソッドを使ってモックを作る allowメソッドを使って「真似をする」メソッドを割り当てる テストする ※「1.」と「2.」の操作は互いに独立しています(互いに依存していない)

プライベートメソッドを RSpec でテストする方法

結論 sendメソッドを使ってプライベートメソッドを呼び出す。 具体例 メソッドの呼び出し 例えばfoobarメソッドがプライベートメソッドであるとする。その際は次のようにfoobarメソッドが呼び出せる。 obj.send(:foobar) テストを書く あとはこれを用いて例…

Twitter の gem でリツイートを「リツイート元のツイートID」で取得しない場合は情報が正しく得られないときがある

難解な標題 難解な標題とともに、内容も難解です。箇条書きで説明します。 ツイートはそれぞれがユニークな「ツイートID」を持つ リツイートであってもそのリツイート自体が「ツイートID」を持つ ただしその「ツイートID」にアクセスするとリツイート元(オ…

UPSERT を簡単に実現できる gem である「upsert」を使おうとして wrong number of arguments (given 2, expected 0) と怒られた場合

UPSERT を実現する gem である「upsert」 結論 require 'upsert'する。 どうしてこうなった Active Recordのヘルパーメソッドとして使おうとしてrequire 'upsert/active_record_upsert'だけをrequireしていた。 すると、どうあがいてもwrong number of argum…

IntelliJ IDEA で Ruby をリモートで Run/Debug しようとしてできなかった話

最新の RubyMine だと OK? @takeyuweb さんによれば、できるっぽいけどまだ試していないです。そしてこれはRubyMineだけなのかな?そうだとしたら乗り換えてもいいかなと。PHPが必要になったらPhpStormを使うという感じで。IntelliJ IDEAは実質的にJava専用…

Capistrano でローカルにファイルをコピーするだけの方法(Git(SCM)を使わない)

結論 1. capistrano-scm-copy をインストールする まずcapistrano-scm-copyというgemをインストールします。 $ gem install capistrano-scm-copy

Active Record で UPSERT する方法

結論 Userモデルを対象にすると仮定した場合、以下のようにfind_or_initialize_byメソッドで検索をかけて、saveメソッドをチェインすればよいです。 User.find_or_initialize_by( name: 'tomoyo', age: 23, gender: 'female', ).save 補足 便利なgemがあるか…

Embulk の embulk-input-random を用いてランダムなデータを作成する方法(CSVファイルへ書き出す)

embulk-input-random kumagi さんによる Embulk のプラグインです。いわゆるダミーデータの作成に役立ちます。

RSpec と SimpleCov を使ってカバレッジを計測、表示する

結論 1. まず SimpleCov をインストール 以下ではシェルからインストールしていますが、Gemfileに書いてbundle installでもよいです。 $ gem install simplecov

単体で RSpec を使う際の require のやり方

結論 spec_helper.rbにrequireを書く。

ActiveRecord::Relation のオブジェクトから生データ(FixnumクラスやStringクラスのオブジェクト)を取り出す方法

結論 以下の順序に沿っていきます。説明を分かりやすくするため*1、一部で正確ではない表現を使っています。 *1:分かりやすくなっているだろうか……

Legato を用いたコードを抽象化する

Legato Google Analytics の API を扱うときに便利な gem です。 ベタ書きで実行はできるけれど 以前に書いた記事のとおりにコードを書いていけば Legato を用いて Google Analytics の結果を取得することができます。しかしこのコードは(分かりやすさのた…

Legato でフィルターをかける方法

Legato Google Analytics の API を扱うときに便利な gem です。 検索結果に対して「フィルター」をかける 例えば、昨日のサイトのページビュー数を取得したとします。その中から「ページビュー数が1000以上のもの」を抽出したい場合には「フィルター」をか…

Legato でプロファイル(ビュー)を選ぶ方法

Legato Google Analytics の API を扱うときに便利な gem です。 ビューを選択する APIの認証が済んだユーザは次の段階で「ビュー」を選択することになります。その際の選択方法を記します。以下、認証が済んだユーザのオブジェクトを ga_user とします。ま…

Google Analytics API 用の gem である Legato を使う

Legato Google Analytics の API を扱うときに便利な gem です。 ごくごく基本的な使い方 Legato の詳しい使い方は 公式のREADME や 公式のWiki に詳しく載っていますが、やはりコードを実際に見て理解するのが一番良いと思いますので、コードベースで順を追…

Ruby で Time.parse メソッドを使うときは require 'time' してあげないといけない

結論 標題のとおりです。

Nokogiri(というか XPath ?)のHTMLパースで属性値を指定した際にオブジェクトが取得できないとき

結論 属性値(プロパティ値)はすべて小文字で記述しないといけない。

Kaminari の バージョン 1.0.0 以降では直接ページ総数を取得する方法はない(ようだ)

追記 以下の内容は大きな勘違いの可能性(検索力不足)。READMEを参照。 https://github.com/kaminari/kaminari/blob/master/README.md Kaminari 説明するまでもないぐらいに、有名で素敵なプロダクトです。 ページ総数を取得したいが…… 今現在、何ページあ…

Rails で rails generate kaminari:views bootstrap3 が失敗するのを防ぐ方法

結論 どこか適当な場所でいいので*1、require 'open-uri'をしてやる。 私はconfig/initializers/extensions.rbというファイルを作り、そこに以下のように一行だけ書いて、Rails を再起動しました(重要)。 require 'open-uri' 設定ファイルなどはまだ何もい…

Rails で既存クラスにメソッドを追加(オープンクラス)したが適用されない

結論 Rails の再起動を行っていなかった。

Rails で created_at や updated_at に現在日時を DEFAULT で入れたい場合

結論 こんな具合に書きます。 class CreateUsers < ActiveRecord::Migration[5.1] def change create_table :users do |t| # 省略 t.datetime :created_at, default: -> { 'CURRENT_TIMESTAMP' } t.datetime :updated_at, default: -> { 'CURRENT_TIMESTAMP'…

Kuroko2 のインストールで少しハマった

Kuroko2 Cookpad製のジョブ管理システムです。 ドキュメントは以下から。

Rails (というか Active Record) のマイグレーションで複合外部キーを設定する方法

結論 生SQLを書くしかなさそう。

Powered by はてなブログ