Ruby
対象読者 Ruby初心者を抜け出したい人 あまり人のコードとか読まないけどそろそろ読む練習したい人 コードリーディングに慣れてる人だと30分もかからないので,対象読者じゃないかも. 前提知識 Rackアプリケーションの実装に関する基本的な事項 Rack解説 - …
TL;DR Slackの分報をesaの日報にするやつつくったよ izumin5210/hitorigoto-reporter (GitHub / Docker Hub) ちゃんと環境変数セットしてArukasでホスティングすれば誰でも簡単に利用できるよ Introduction 『Slackの分報をesa.ioに日報としてあげてくれるや…
無限勉強会 #tqrk09 #プレモルセミナー— いずみん (@izumin5210) August 29, 2015 恒例のLT駆動開発した. 資料 スライド 動画 RSpec::LedFormatter from Masayuki IZUMI on Vimeo. 副産物 izumin5210/ruboty-pi_gpiogithub.com 内容 最初作りたかったのは,…
はじめに 2015/7/11に関西Ruby会議06にて"API server/client development using JSON Schema"というタイトルで発表(20分講演)をしてきました. 反省 フロントエンド,スマホアプリを伴うアプリケーションの開発におけるJSON Schemaの有効性を示すのが当初…
TL;DR allow_nilでNoMethodError対策 prefixでメソッド名に接頭辞をつける delegateの便利オプション allow_nil class User include ActiveMode::Model attr_accesor :profile delegate :name, to: :profile, allow_nil: true end class Profile attr_access…
テスト方法がよくわからないので,とりあえずto_sqlして正規表現でちゃんとJOINされるか調べてみてる. describe User, type: :model do describe '.join_before_date_period' do subject { User.join_before_event } it do expect(subject.to_sql).to match…
同一のJOINを複数のscopeやメソッド,コンテキストで使用する場合, それ自体をscopeとして定義しておくとちょっとDRYになる. scope :join_before_date_period, -> do before = Event.arel_table.alias('before_event') joins( arel_table.join(before, Are…
あるモデルが1つのテーブルに対して関連を2つ持っている場合がある. :before_hogeと:after_hogeにbelongs_toしている場合とか. そういうときに両方の関連をJOINするにはArelを利用しなければならない. 以下がコード. belongs_to :before_event, class_na…
cookpad/garageを使って,認証なしでデータ取るようなAPIを作りたい. 必要なのは以下の2項目. Garage::ControllerHelperをincludeしない Garage::RestfulActionsの後にGarage::NoAuthenticationする class Api::UsersController < Api::BaseController inc…
shoulda matchers shoulda-matchersはvalidationやassociationのテストを超簡単に書ける便利マッチャ集みたいなgem. example class User < ActiveRecord::Base belongs_to :company has_one :profile delegate :name, to: :profile delegate :name, to: :co…
all mactcherを利用する. expect([1, 3, 5]).to all(be_odd) Compound Matcherも利用可能(Compound Matcherについては『今日から使える!RSpec 3で追加された8つの新機能』を参照されたい). expect([1, 3, 5]).to all(be_odd.and be < 10) expect([1, 4,…
ActiveModel::Validations::Callbacksもincludeしなければならない. class UserForm include ActiveModel::Model include ActiveModel::Validations::Callbacks # 略 end ActiveModel::Modelに含まれるモジュールは以下のとおり. ActiveModel::Validations…
Coverallsは(金銭的に)使えないけどCircleCIは使ってる,参考程度でいいからCoverage出したいという時に. colszowka/simplecovを利用する. # Gemfile group :test do # 手動requireするのでrequire: false gem 'simplecov', require: false end Circle C…
めんどくさかった. ここではTerm → AcademicTermの変更を例にする. テストが全部緑になるのを確認 table名変更(bin/rails g migration rename_term_academic_term) 置換 旧table名(terms) → 新table名(academic_terms) 旧model名(Term)→ 新model名…
捗ります. *.pltファイルとかに書いてると何が何だかわからなくなってくるが,rakeだとrake -vTでタスク一覧見れたりして楽. gnuplot gemを利用してRubyでgnuplotの処理を書ける(rubygemsのgnuplotは更新が止まっていてdashtypeとかに対応していないので…
/users/:idの:idをnameとかでアクセスできた方がかっこいい. こんなときはFriendlyIdというgemを利用する. 別にgemなしでも容易に実装可能ではあるが,gemを利用すると何をしたいかが明確になり実装がスマートになる(Model中のコードは2行ほど)ので積極…
Controller Concernのテスト 例えばいいねアクションを追加するためのLikableというものがあるとする. これのテストをどうするか. # app/controllers/concerns/likable.rb module Likable extend ActiveSupport::Concern included do before_action :set_l…
毎回事故るので,手順を簡単にメモ(とくにassetsまわり). # Gemfile group :staging do gem 'pg' gem 'rails_12factor' end # config/database.yml staging: adapter: postgresql encoding: unicode pool: 5 # config/secrets.yml staging: secret_key_ba…
Formオブジェクトとか? class Lecture include ActiveModel::Model attr_accessor :name, :lecturer, :grade, :department end いつものactiverecordをactivemodelに置き換えるだけ. ja: activemodel: models: lecture: 講義 attributes: lecture: name: …
JSON Schema × jdocでドキュメントをつくる JSON Schemaとステータスコード JSON Schema,本来はJSONのフォーマットを定義するものなので当然ステータスコードなんて入らない. Hyper Schemaにも入ってなさそう. しかし,QIita API V2のドキュメントを見る…
超便利gemことRailsConfig. ただ,記述が増えてきたりすると分割したくなる. config/initializers内に設定ファイル追加してそこで読み込むだけ. Settings.add_source!("/path/to/source.yml") Settings.reload! DBのマスタデータとして利用するのもありか…
DeviseInvitable 「友人を招待」はもちろん,「サインアップ機能は除きたいけど新規ユーザ作成は必要」な場合(e.g. Adminの追加)を実現したい. ほぼRailsのデファクトスタンダードとも言えそうなDevise gemであるが,そのままだとencrypted_passwordが必…
Rails(正確にはActiveRecord)のバージョンによって選択肢が変わってくる ActiveRecord 4.1未満 Enumerize gemが便利. gem 'enumerize' class User < ActiveRecord::Base extend Enumerize enumerize :role, in: %i(user admin), default: :user end Activ…
@izumin5210 こういうのある interagent/prmd https://t.co/QW9oCp0Lzh— ダメになるクッション (@r7kamura) December 22, 2014 gems prmdでscaffold jdocでドキュメント生成 rack-json_schemaでmockサーバ作ったりvalidationしたり… # Gemfile # ... gem 'ra…
神戸.rb Meetup #10 - Kobe.rb | Doorkeeperで検証してみた内容. ActiveDecorator? ActiveDecoratorはPresenterなどと呼ばれ, ModelとViewの中間のレイヤーを担う. ViewでModelが関わるロジック等を扱いたいとき(表示を整形したいとか)にHelperの代替…
yield matchersなるものがあるらしい. let(:array) { [1, 2, 3] } it { expect { |b| array.each(&b) }.to yield_control } it { expect { |b| array.each(&b) }.to yield_control.exactly(3) } it { expect { |b| array.each(&b) }.to yield_successive_ar…
去年の9月にQiitaに投稿されてた記事. Rubyで「今日も1日がんばるぞい!」 Ruby - 今日も1日がんばるぞい! - Qiita Ruby - 今日も1日がんばるぞい! - Qiita 投稿者のコードを勝手にリファクタリングしてRubyらしくしたときの気付き. 後置のifやwhileで左…
source 'https://rails-assets.org' gem 'rails-assets-fontawesome' ちなみにrails-assets-font-awesomeやrails-assets-Font-Awesomeも同じ.ドジっ娘か. 「Rails Assets信者の会」再び. jquery-railsを駆逐しようの会 - うさみみを生やせ jquery-railsを…
こいつを gem 'jquery-rails' こうじゃ source 'https://rails-assets.org' gem 'rails-assets-jquery' gem 'rails-assets-jquery-ujs' 別名,「Rails Assets信者の会」. Use Bootstrap-Sass 3.x and Font Awesome (bower-rails vs. rails-assets) - Qiita …
めんどくさい. なにがめんどうかって,なにか作るのにいちいちXMLをパースしたりするの. JSONならまだいいんだけど. JSでXMLをバラそうと思ったらjQueryとかでゴリゴリ解体しなきゃだし, RubyでやるにしてもNokogiriのxpathとかで切り刻む必要がある. m…