Ruby on Rails
はじめに 2015/7/11に関西Ruby会議06にて"API server/client development using JSON Schema"というタイトルで発表(20分講演)をしてきました. 反省 フロントエンド,スマホアプリを伴うアプリケーションの開発におけるJSON Schemaの有効性を示すのが当初…
テスト方法がよくわからないので,とりあえず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…
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名…
/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の代替…
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 …