kakakakakku blog

Weekly Tech Blog: Keep on Learning!

Rails

Rubyist が学び合うカンファレンス「Rails Developers Meetup 2018 Day 4」に参加した

12/8 (土) に開催された「Rails Developers Meetup 2018 Day 4 Nouvelle Vague」に参加した.イベント名に「Rails」と付いているものの,トークテーマは多岐にわたり,エンジニアなら誰でも楽しめるように工夫されていた.また YouTube ライブ配信もあり,リ…

プログラミング初心者に教えるときは「身近な比喩」が重要なのだ!

今日は「Rails Developers Meetup 2018 Day 4 Nouvelle Vague」に参加し,教育関連のネタで登壇をしてきた!パブリックイベントに登壇するのは約半年振りで,やはり登壇するのは楽しいなぁー!という気持ちになった.あと登壇前に司会者から「ブロガーの吉田…

「プログラミング初心者に Rails を教えるコツ」を発表した

昨日は「表参道.rb #30」に参加して,発表をしてきた.カジュアルな雰囲気で,ディスカッションも多くとても良かった. omotesandorb.connpass.com 資料 今日は「プログラミング初心者に Rails を教えるコツ」というタイトルにした.技術的な話ではないけど…

Catarse でクラウドファンディングサービスを動かしてみた

OSS で公開されているクラウドファンディング専用の Rails アプリケーション "Catarse" をローカルで動かしてみた. まだ詳細な機能までは確認できてなくてデバッグ中だけど,基本機能は揃っていて普通によくできてるなという印象を受けた.技術スタックも面…

"hash is defined by Active Record" って怒られた

先週に引き続き Rails 移行検証をしていて,既存のテーブルに hash カラムが存在していると ActiveRecord で ActiveRecord::DangerousAttributeError が発生する問題を発見した.少し調べてみたので残しておく.正確に言うと hash だけじゃなくて ActiveReco…

ActiveRecord で複合プライマリーキーのテーブルを扱う

Rails 移行検証の過程で既存のテーブルを操作してみようとしたら,一部のテーブルで .find がエラーになってハマったのでメモ程度に残しておく.原因としては id と別のカラムの複合プライマリーキーになっていることで,Rails は複合プライマリーキーを許容…

migration_comments + annotate で MySQL のカラムコメントを管理する

今まで MySQL のカラムにコメントを付ける習慣がなかったんだけど,いざ新メンバーとして既存コードを読んで理解する立場になってみると,ちゃんと書かれたコメントのおかげでスキーマを理解しやすかったし,メンバー間の認識相違も生まれないし,重要だなと…

Rails に New Relic をサクッと導入してみた

Rails に New Relic を導入してみた.サクッ! Gem と設定ファイル(管理画面からダウンロードできる)を追加するだけでローカル環境から疎通確認ができちゃう! あまりに簡単で感動した. Digital Performance Monitoring and Management | New Relic ドキ…

表参道.rb #3 に参加してベンチマークの重要性を学んだ

昨日は 表参道.rb #3 に参加してきた! 会場を間違えて隣のマンションで迷ってたのは禁句www omotesandorb.connpass.com 表参道.rb と僕 表参道.rb #1 以来の参加で,そのときは LT をしたりした. kakakakakku.hatenablog.com 参加レポート 既に参加レポー…

Rails もくもく会で SideCI を試してみた

もくもく 昨日に続き今日も勉強会で,Rails もくもく会に参加してきた.土曜の朝に2時間集中できるって素晴らしいじゃん! 実は外部のもくもく会に参加するのは初めてだったんだけど,確実に時間を捻出できるっていうメリットだけじゃなくて,最後に成果発表…

Vagrant に Redmine + redmine_backlogs の環境を構築してみた

Redmine + redmine_backlogs 先月からタスク管理ツールを HuBoard に移行したんだけど(HuBoard の話はまた今度!),それまではずっと Redmine + redmine_backlogs を使ってて,個人的に凄く気に入ってた. スクラムにフィットするし,入力項目が少なく管理…

Faker のコードを読んだりテストを直したり

Faker::Company.name で企業名を生成する GitHub - stympy/faker: A library for generating fake data such as names, addresses, and phone numbers. FactoryGirl でテストデータを生成するときに Faker を使ってるんだけど,企業名を Faker::Company.name…

auto_strip_attributes を紙でコードリーディングしてみた

Rails でフォームのテキストフィールドを保存するときに 先頭の半角スペース / 全角スペース 末尾の半角スペース / 全角スペース を自動で除去したいという要求があった. 別に Gem を使うまでもなく実現できそうだけど,調べたところ auto_strip_attributes…

send_data でダウンロードするファイル名をテストする

Rails で send_data を使って CSV ダウンロードを実装してて,ダウンロードする CSV ファイル名を Capybara でテストしたかった. response_headers から取れる こんな感じで書けた. 実際には 'attachment; filename="xxx.csv"' ってなってるから eq ではな…

Rails で簡単に PV を計測できる impressionist を触ってみた

impressionist Rails で簡単に PV を計測できる Gem の impressionist を触ってみた. README にも書いてある通り,Google Analytics などの計測ツールを使わなくても自前で PV を集計できる点がメリット.逆に複雑な分析をしたかったり,高トラフィックなサ…

表参道.rb #1 で Ruby 資格ネタの LT をしてきた

今日は「表参道.rb #1」に参加してきた! LT 大会 + 懇親会って感じで凄く勉強になったー.楽しかったー. 開場提供の Sansan 様ありがとうございました!オシャレな空間でビックリしました! omotesandorb.connpass.com LT した 誰得な気がするけど Ruby Go…

Capybara で非表示要素を find する

Capybara で style="display: none;" になってる非表示要素を取ろうとしたら Capybara::ElementNotFound になって困った. 結論から言うと,自分の Capybara の環境設定だと非表示要素は無視されるようになってた. visible: false で見れるようになった こ…

Rails で全角文字を禁止するカスタムバリデータ

フォームで全角文字の入力を禁止したいなーと考えてて,最初は format: { with: } で正規表現を書いてみたんだけど,記号の部分を網羅するのが面倒で微妙だった. ascii_only? ascii_only? (String) - APIdock 判定できそう! pry(main)> 'abc'.ascii_only? …

モデルのバリデーションで if と unless を使う

Rails でモデルのバリデーションを書くときに if と unless を使うときがたまーにあって,そのときに書き方を間違えて undefined method を出しちゃったりするので,自分用にメモしておく. RailsGuides RailsGuides に書かれてるんだからちゃんと読んで!っ…

ActiveDecorator で関連先のモデルをデコる

Rails で view のロジックを切り出すために ActiveDecorator を使ってる. The Ruby Toolbox で Rails Presenters のランキング見たら ActiveDecorator は全然人気なくて,Draper 最高!な雰囲気を感じる.うむ. Rails Presenters - The Ruby Toolbox ちな…

RSpec で ActionController::RoutingError: assets ってなる

RSpec で Integration Test (Capybara) を書いて動かしたところ,エラーで落ちた. 説明できるレベルまで原因わかってないけど,解決することはできたので,メモ程度にまとめておく. ActionController::RoutingError: assets エラーを見る限り,assets のル…

Ruby で iTune と Google Play のアプリ情報を取得する

iTune のアプリ情報を取得する "itunes-search-api" Gem を使って簡単に取得できる. 取得できる項目が非常に多いので,いろいろと応用できそうな感じ. rlivsey/itunes-search-api bundle install gem 'itunes-search-api' irb で主要な情報を取得してみる …

特定の .erb を .haml に変換する

erb2haml erb2haml | RubyGems.org | your community gem host を使えば,全ての .erb を .haml に変換できる.rake -T すると,以下の rake task が追加されてるので,それを実行するだけで良くてお手軽. rake haml:convert_erbs # Perform bulk conversio…

Database Cleaner で複数データベースを扱う方法

背景 database.yml に複数データベースを設定してて,一部のモデルで establish_connection してるみたいなアプリケーションの場合,DatabaseCleaner/database_cleaner · GitHub を使って,テストごとに全てのデータベースをキレイにしたいみたいなシチュエ…

「Rails3技術者認定ブロンズ試験」に合格した

今日「Rails3技術者認定ブロンズ試験」を受けてきて,合格したのでまとめておく. Railscp | 僕の Rails 歴はまだ半年程度で,Rails3 のプロダクトと,Rails4 のプロダクトを少し保守したことがあるレベル.Ruby 歴は1年程度で「Ruby技術者認定試験 Silver」…

RSpec でポリモーフィック関連のモデルを FactoryGirl で生成する

タイトルの通り,RSpec でポリモーフィック関連のモデルを FactoryGirl で生成してみた. 特にハマるところはなくて,Stack Overflow に載ってた書き方ですんなり書けた.関連まで意識した FactoryGirl になって個人的にスッキリ! ruby on rails - FactoryG…

Rails の f.collection_select で複数カラムを結合した文字列で表示する

Rails でテーブルからセレクトボックスを生成するときに collection_select を使うけど,特定のカラムではなくて,複数のカラムを文字列連結して表示したいというシチュエーションがあったので,試してみた. 基本形 (.haml) users テーブルに id と name カ…

jQuery で画像が存在しない場合に代替画像に差し替える

jQuery で,リクエストした画像が存在しない場合に代替画像に差し替える実装を試してみた.ただしまぁ,アプリ内で存在確認できるなら,そっちでやるべきなので,フロントで判定しないといけないような状況でのみ使う感じかな. Rails でのサンプルコード im…

Rails で assets にファイルがあるか判定する

/app/assets/images 直下にファイルがあるとして,その有無によって controllers や views や decorators で処理を分岐させたい場合,File.exist? で判定できる.Rails コンソールで確認できる. pry(main)> File.exist? "#{Rails.root}/app/assets/images/a…

standalone-migrations でデータベースをマイグレーション管理にする

非マイグレーション管理で,さらに Rails の規約に則ってないような,サービス稼働中の既存データベースをこれからマイグレーション管理にする方法を考えていて,standalone-migrations っていう Gem が良さそうだったので試してみた.基本的には GitHub の …