zakihayaメモ

RubyとRailsのことが中心

Ruby

リポジトリをGitHubに変更してCircle CIで自動デプロイしようとしたら大ハマリした

今更ながらCircle CIを使ってみる 前から興味があったCircle CIでの自動デプロイを、機会があったので試してみました。 リポジトリをBitbucketからGitHubに変えて、Circle CIに登録してデプロイできるようになるまで8時間。。。 いい経験にはなりましたが大…

RubyのバッチでGoogleAnalyticsのデータを取得する(OAuth2利用)

Garbが使えなくなった・・・ もともとはGarbというgemを使ってアクセス数を取得するバッチを作っていたのですが、急にGoogleにログインができなくなってしまいました。。 Sija/garb · GitHub いろいろと見てみると、Google APIがOAuth2以外の認証を受け付け…

Railsでメールを送信する機能を実装する時はmailcatcherを使うと便利

Webアプリを作っていると、メールを送信する機能を作ることがよくあるかと思います。 そんな時はmailcatcherというgemを使うと、仮想SMTPのような形で使えるので便利です。 準備 Gemfileを更新して、 bundle install します。 # Gemfile group :development …

bundlerを使ってGemを作成する

Gemの作り方を勉強するために、どうしようもないGemを作ってみます。 テストを作成し、Travis CIで自動テストができることが目標です。 ソースはこちら zakihaya/hello-zakihaya · GitHub Gemを作成する準備 Gemの雛形を作成する $ bundle gem hello_zakihay…

Capistranoを使う時はブランチ名をdeployにしてはいけない

アプリをデプロイしようとコマンドを打っても全くうまくいかない。 スペルミスも無いのになぜだろうと思ったら、ちゃんとエラーが出てた。 fatal: A branch named 'deploy' already exists. どうやらCapistrano内部でdeployブランチを作って、それをサーバに…

Hash#mapとHash#selectのブロック引数の違いでハマる

ブロック引数が1つのmapで作っていたソースをコピーしてselectをやろうとしたら うまくいかなくて困った。 Hash#mapはブロック引数が1つの時と2つの時で挙動が違う 引数が1つの時 keyとvalueが配列に入ってくる {a: 1, b: 2, c: 3}.map{|val1| puts "val1=#{…

AASMのReadmeを日本語訳してみた

AASMはRubyのクラスにステートマシンパターンを追加できるライブラリです。 業務で使うことがあったので訳してみました。初の試みなので、おかしい点などがあればばしばし指摘してください。元ページ aasm/aasm · GitHub AASM - Rubyのステートマシン このパ…

Object#tryでインデクサを対象にする

まずはObject#tryについて def try(method, *args, &block) ・・・ end なんと!ブロックも使えるのか、知らなかった。tryを使うと @object ? @object.name : nil が @object.try(:name) こんな感じで書けるようになります。 モデルのインスタンスを扱う時と…

remove_methodとundef_method

メソッドを未定義化する時に用いるremove_methodとundef_methodの違い。・remove_method スーパークラスに同名のメソッドがある場合は、そのメソッドが残る。・undef_method スーパークラスに同名のメソッドがあっても、完全にそのメソッドを未定義化する。

options_for_selectで先頭に空白を挿入する

先日記載した、options_for_selectでDBの列を指定して表示するに加えて、先頭に空白を追加したい場合。 select_tag( :item_name, options_for_select( ModelName.all.unshift(ModelName.new).map{ |model| [model.prop_value, model.prop_key] } ,params[:it…