Augmented Usamimi

it { is_expected.to be_blog.written_by(izumin5210) }

Ruby on Rails

関西Ruby会議06でJSON Schemaについて語ってきた #kanrk06

はじめに 2015/7/11に関西Ruby会議06にて"API server/client development using JSON Schema"というタイトルで発表(20分講演)をしてきました. 反省 フロントエンド,スマホアプリを伴うアプリケーションの開発におけるJSON Schemaの有効性を示すのが当初…

【Rails】JOINするscopeのテスト

テスト方法がよくわからないので,とりあえず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…

【Rails】JOINするscopeを書く

同一のJOINを複数のscopeやメソッド,コンテキストで使用する場合, それ自体をscopeとして定義しておくとちょっとDRYになる. scope :join_before_date_period, -> do before = Event.arel_table.alias('before_event') joins( arel_table.join(before, Are…

【Rails】同一テーブルを複数回JOINする

あるモデルが1つのテーブルに対して関連を2つ持っている場合がある. :before_hogeと:after_hogeにbelongs_toしている場合とか. そういうときに両方の関連をJOINするにはArelを利用しなければならない. 以下がコード. belongs_to :before_event, class_na…

【Rails】cookpad/garageで認証不要のAPIをつくる

cookpad/garageを使って,認証なしでデータ取るようなAPIを作りたい. 必要なのは以下の2項目. Garage::ControllerHelperをincludeしない Garage::RestfulActionsの後にGarage::NoAuthenticationする class Api::UsersController < Api::BaseController inc…

【RSpec】shoulda-matchersでenum,delegateのテスト

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…

【Ruby】ActiveModel::ModelなクラスでCallbackを使う

ActiveModel::Validations::Callbacksもincludeしなければならない. class UserForm include ActiveModel::Model include ActiveModel::Validations::Callbacks # 略 end ActiveModel::Modelに含まれるモジュールは以下のとおり. ActiveModel::Validations…

CircleCIにcoverageを出す

Coverallsは(金銭的に)使えないけどCircleCIは使ってる,参考程度でいいからCoverage出したいという時に. colszowka/simplecovを利用する. # Gemfile group :test do # 手動requireするのでrequire: false gem 'simplecov', require: false end Circle C…

【Rails】Model名変更5ステップ

めんどくさかった. ここではTerm → AcademicTermの変更を例にする. テストが全部緑になるのを確認 table名変更(bin/rails g migration rename_term_academic_term) 置換 旧table名(terms) → 新table名(academic_terms) 旧model名(Term)→ 新model名…

【Rails】URL Parameterにid以外を利用する

/users/:idの:idをnameとかでアクセスできた方がかっこいい. こんなときはFriendlyIdというgemを利用する. 別にgemなしでも容易に実装可能ではあるが,gemを利用すると何をしたいかが明確になり実装がスマートになる(Model中のコードは2行ほど)ので積極…

【Rails】Controller Concernのテスト

Controller Concernのテスト 例えばいいねアクションを追加するためのLikableというものがあるとする. これのテストをどうするか. # app/controllers/concerns/likable.rb module Likable extend ActiveSupport::Concern included do before_action :set_l…

【Rails】Herokuにstagingでぷろいめも

毎回事故るので,手順を簡単にメモ(とくに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…

【Rails】ActiveModel::Modelなクラスのi18n

Formオブジェクトとか? class Lecture include ActiveModel::Model attr_accessor :name, :lecturer, :grade, :department end いつものactiverecordをactivemodelに置き換えるだけ. ja: activemodel: models: lecture: 講義 attributes: lecture: name: …

JSON SchemaからStatusつきAPI Documentをつくる

JSON Schema × jdocでドキュメントをつくる JSON Schemaとステータスコード JSON Schema,本来はJSONのフォーマットを定義するものなので当然ステータスコードなんて入らない. Hyper Schemaにも入ってなさそう. しかし,QIita API V2のドキュメントを見る…

【Rails】rails_configのymlファイル複数読み込み

超便利gemことRailsConfig. ただ,記述が増えてきたりすると分割したくなる. config/initializers内に設定ファイル追加してそこで読み込むだけ. Settings.add_source!("/path/to/source.yml") Settings.reload! DBのマスタデータとして利用するのもありか…

【Rails】Deviseに招待機能をつける

DeviseInvitable 「友人を招待」はもちろん,「サインアップ機能は除きたいけど新規ユーザ作成は必要」な場合(e.g. Adminの追加)を実現したい. ほぼRailsのデファクトスタンダードとも言えそうなDevise gemであるが,そのままだとencrypted_passwordが必…

【Rails】Enum - EnumerizeとActiveRecord::Enum

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…

JSON Schemaを少しでも楽に使う

@izumin5210 こういうのある interagent/prmd https://t.co/QW9oCp0Lzh— ダメになるクッション (@r7kamura) December 22, 2014 gems prmdでscaffold jdocでドキュメント生成 rack-json_schemaでmockサーバ作ったりvalidationしたり… # Gemfile # ... gem 'ra…

【Rails】ActiveDecorator読んでみたら超勉強になった

神戸.rb Meetup #10 - Kobe.rb | Doorkeeperで検証してみた内容. ActiveDecorator? ActiveDecoratorはPresenterなどと呼ばれ, ModelとViewの中間のレイヤーを担う. ViewでModelが関わるロジック等を扱いたいとき(表示を整形したいとか)にHelperの代替…

【Rails】Font AwesomeもRails Assetsから入れよう

source 'https://rails-assets.org' gem 'rails-assets-fontawesome' ちなみにrails-assets-font-awesomeやrails-assets-Font-Awesomeも同じ.ドジっ娘か. 「Rails Assets信者の会」再び. jquery-railsを駆逐しようの会 - うさみみを生やせ jquery-railsを…

【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 …