Augmented Usamimi

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

Ruby

Sinatraの実装を読む

対象読者 Ruby初心者を抜け出したい人 あまり人のコードとか読まないけどそろそろ読む練習したい人 コードリーディングに慣れてる人だと30分もかからないので,対象読者じゃないかも. 前提知識 Rackアプリケーションの実装に関する基本的な事項 Rack解説 - …

Slackの分報をesaの日報にするやつをDockerとArukasで雑に動かす

TL;DR Slackの分報をesaの日報にするやつつくったよ izumin5210/hitorigoto-reporter (GitHub / Docker Hub) ちゃんと環境変数セットしてArukasでホスティングすれば誰でも簡単に利用できるよ Introduction 『Slackの分報をesa.ioに日報としてあげてくれるや…

TokyuRuby会議09でIoT×RubotyについてLTしてきた #tqrk09

無限勉強会 #tqrk09 #プレモルセミナー— いずみん (@izumin5210) August 29, 2015 恒例のLT駆動開発した. 資料 スライド 動画 RSpec::LedFormatter from Masayuki IZUMI on Vimeo. 副産物 izumin5210/ruboty-pi_gpiogithub.com 内容 最初作りたかったのは,…

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

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

【Ruby】delegateの便利オプションallow_nil,prefix

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…

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

【RSpec】配列要素全てにマッチャを適用する

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

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

【gnuplot】論文のグラフはgnuplotとrakeを使うと捗る

捗ります. *.pltファイルとかに書いてると何が何だかわからなくなってくるが,rakeだとrake -vTでタスク一覧見れたりして楽. gnuplot gemを利用してRubyでgnuplotの処理を書ける(rubygemsのgnuplotは更新が止まっていてdashtypeとかに対応していないので…

【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の代替…

【RSpec】yieldを伴うメソッド(ブロック引数 etc.)のテスト

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…

【Ruby】後置if,whileで複数の処理

去年の9月にQiitaに投稿されてた記事. Rubyで「今日も1日がんばるぞい!」 Ruby - 今日も1日がんばるぞい! - Qiita Ruby - 今日も1日がんばるぞい! - Qiita 投稿者のコードを勝手にリファクタリングしてRubyらしくしたときの気付き. 後置のifやwhileで左…

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

オープンデータめんどくさい

めんどくさい. なにがめんどうかって,なにか作るのにいちいちXMLをパースしたりするの. JSONならまだいいんだけど. JSでXMLをバラそうと思ったらjQueryとかでゴリゴリ解体しなきゃだし, RubyでやるにしてもNokogiriのxpathとかで切り刻む必要がある. m…