Skip to content

Instantly share code, notes, and snippets.

View amyroi's full-sized avatar

Atsuko Mori amyroi

  • Freelance
  • Tokyo
View GitHub Profile
@amyroi
amyroi / active_model_serializer_for_activemodel.rb
Created July 20, 2018 01:05
ActiveModel::Serializer for ActiveModel::Model
# ActiveModel::SerializerをActiveModel::Modelで使う
class Model < ApplicationRecord
end
# Modelの操作をするクラス
class Dummy
include ActiveModel::Serialization
include ActiveModel::Model
attr_accessor :model
# Helper spec内でrequestのmockをする
let(:request) { instance_double("request", methods) }
let(:devices) { %w(android iphone pc) }
let(:methods) {
{}.tap do |t|
devices.map do |device|
t.merge!({ "from_#{device}?": false })
end
end
}
@amyroi
amyroi / search_dependency_rspec.rb
Created August 29, 2017 09:35
rspec config.radom 依存を探す
# first CIで落ちたseedを指定
$ bin/spring rspec spec -fd --order rand:40433
# second 対象のspec前のspecでデータ周り、前提条件で依存している為ディレクトリずつ実行してみる。
$ bin/spring rspec spec/models/ spec/features/failer_spec.rb -fd --order rand:40433 --fail-fast
# third ディレクトリを変えて絞っていく
$ bin/spring rspec spec/lib/ spec/features/failer_spec.rb -fd --order rand:40433 --fail-fast
# loop
@amyroi
amyroi / enum_i18n.rb
Created July 20, 2017 00:59
Enum I18n
module EnumI18n
extend ActiveSupport::Concern
included do
after_initialize :set_enum_text
end
def set_enum_text
name = (self.class == ::User) ? 'user' : model_name&.element
defined_enums.each do |enum|
enum_column = enum.first
@amyroi
amyroi / regrex_array_spec.rb
Created July 19, 2017 06:52
Match an array of strings by regex Ask
let(:methods) { %w(content array sub_class) }
expect(methods).not_to include(match /_text/)
@amyroi
amyroi / Guardfile_target_submodule.rb
Created May 19, 2017 15:24
Guardfile target submodule
# Sample Guardfile use options chdir
paths = %w(spec submodule/spec)
dirs = %w(./ submodule/)
dirs.each do |dir|
guard :rspec, cmd: 'bin/spring rspec', chdir: dir do
require 'guard/rspec/dsl'
dsl = Guard::RSpec::Dsl.new(self)
# RSpec files
@amyroi
amyroi / instance_method_hook.rb
Created March 16, 2016 06:00
インスタンスメソッドへHookの設定
module Hook
def increment
super
expire
end
end
class Ranking
prepend Hook
@amyroi
amyroi / partitioning.rb
Created December 7, 2015 14:00
Railsでパーティショニング
# Gem
gem 'composite_primary_keys'
# 複合keyの設定の為、idのprimary_keyを解除して、複合keyでindex追加
class CreatePageviews < ActiveRecord::Migration
def change
create_table :pageviews, id: false do |t|
t.integer :id, null: false
t.integer :article_id, null: false
t.integer :category_id, null: false
@amyroi
amyroi / app_models_syllabus.rb
Last active September 29, 2015 05:11
ActiveModel:FactoryGirl.rb
# app/models/syllabus.rb
class Syllabus
include ActiveModel::Model
attr_accessor :records, :academic_year, :course
validates :academic_year, presence: true
def initialize(academic_year, course = nil)
@academic_year = academic_year
@course = course
@amyroi
amyroi / active_model_account.rb
Last active September 8, 2015 03:10
SimpleForm + ActiveModel:validation
# app/models/account.rb
class Account
include ActiveModel::Model
validates :name, presence: true
def initialize
# ~
end
end