Skip to content

Instantly share code, notes, and snippets.

View juno's full-sized avatar
💰
writing code (almost) every weekday

Junya Ogura juno

💰
writing code (almost) every weekday
View GitHub Profile
@juno
juno / rails-anti-patterns.md
Created November 28, 2014 09:38
[WIP] Railsアンチパターン

Rails.envを参照して処理を分ける

class RemoteServer < ActiveRecord::Base
  validate :check_connectivity, if: Rails.env.production?
end
  • バリデーション時にcheck_connectivityメソッドが呼び出されることをテストできない
  • rails consoleなどでRemoteHost.newした場合にcheck_connectivityによる接続テストをスキップできない
@juno
juno / rails-association-validation-strategy.md
Created November 16, 2014 17:48
ActiveRecordモデルにおけるAssociationのバリデーション戦略

ActiveRecordモデルにおけるAssociationのバリデーション戦略

  • foo_idのpresenceでは、存在しないIDでも保存できてしまう
    • fooを参照した際はnilが返る
  • fooのpresenceを指定すると、foo_idへの代入ではバリデーションを通らなくなる
    • fooに未保存のオブジェクトを代入してsave!するとPG::NotNullViolationが発生する
      • PG::NotNullViolation: ERROR: null value in column "character_id" violates not-null constraint
  • Polymorphic association
    • validates :foo_type, presence: trueは不要
  • クラスが存在しない場合はsave!時にNameError: uninitialized constant XXXが発生する
@juno
juno / test.rb
Created October 25, 2014 08:37
Capybara + Poltergeistでkeyupイベントを発生させる方法。
# See: https://github.com/teampoltergeist/poltergeist#sending-keys
page.find('#body').native.send_keys('A', :Backspace, 'B')
@juno
juno / action_mailer.rb
Created October 16, 2014 05:08
TransportEncoding ext for ActionMailer::Base
# Original code borrowed from http://docs.komagata.org/5161
module TransportEncodingMailer
def initialize(method_name = nil, *args)
super
@_message.transport_encoding = '8bit'
end
end
module ActionMailer
@juno
juno / qnyp-tech-stack.md
Last active May 17, 2023 14:19
Technology stack at qnyp

Technology stack at qnyp

Programming Language and Frameworks

  • Ruby 2.1
  • Ruby on Rails 4.1
  • CoffeeScript
  • Sass - We prefer to use Scss syntax
  • Bower - JavaScript dependency management

Hosting

ダッシュボーダーズハッカソン

これはなに?

ダッシュボーダーズハッカソンは自社サービスを作ってる人たちがあつまり、 8時から20時までの12時間で自社新サービスや新機能をリリースする集まりです。

趣旨

受託という名のさぼりぐせが抜けない我々が集まるのだったら、

@juno
juno / summary.md
Last active August 29, 2015 14:00
(Work in progress) Summary of How to radically simplify your user interface in Japanese

How to radically simplify your user interface | Nathan Barry

シンプルなインターフェースを維持しつつ競合に打ち勝つためにはどのようにすればよいか。Basecampがよい例。シンプルなインターフェースを持った少数の機能で、より複雑なプロジェクト管理アプリと同じだけの作業をこなすことができる。

37signals(現Basecamp)のRyan Singer氏が、彼が「柔道(judo)」と呼ぶ、個々の機能のインターフェースを徹底的にシンプルにするためのアイデアについて教えてくれた。

Judoの紹介

  • メンバーシップを扱うアプリを考えてみる
  • メンバーシップに応じた特典を受け取っているかどうかを把握するための詳細なモデルが必要になったとする
  • 例えば特典がTシャツだったら、ピッタリのサイズを届けるためにそのサイズを知っておきたい

レイヤ化アーキテクチャ (Layered Architecture)

  • ユーザーインターフェース (User Interface) - ユーザーへの情報の表示とユーザーからの入力の処理を担う
  • アプリケーションレイヤ (Application Layer) - ドメインロジックをまったく含まない薄いレイヤ。ビジネス価値のある機能のうち、ドメインとは関係ないものを担う。例えば、レポートの生成やメールによる通知の送信など
  • ドメインレイヤ (Domain Layer) - ビジネスの処理を担う。エンティティやビジネスルールといった抽象的なドメインコンセプトがこのレイヤに含まれる一方で、データの永続化やメッセージ送信などは含まれない
  • インフラストラクチャレイヤ (Infrastructure Layer) - 永続化やメッセージ送信、メール配信などを担う

レイヤ化アーキテクチャのアイデアの最重要部分は、すべてのレイヤがその下位のレイヤにのみ依存するようにすべきという点。したがって、すべての依存性は同じ方向に向くようになる。例えば、ドメインレイヤはインフラストラクチャの各要素に依存するが、それ以外の方向には依存しない。

レイヤ化アーキテクチャとRails

@juno
juno / qnyp-rails-app-stats.md
Created March 26, 2014 17:48
qnyp.com Rails app statistics.

qnyp.com Rails app statistics

Date: 2014-03-27

Tests

$ rake spec
You are using WebMock 1.17.4. VCR 2.8.0 has been tested against WebMock >= 1.8.0, < 1.16, and you are using a newer version. If you experience VCR issues, consider downgrading WebMock as it may fix it.
..................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................
@juno
juno / Gemfile
Created March 12, 2014 07:12
Regression test template for activerecord.gem with PostgreSQL. Borrowed from https://github.com/rails/rails/blob/master/guides/bug_report_templates/active_record_gem.rb
source 'https://rubygems.org'
ruby '2.1.1'
gem 'activerecord', '4.0.4.rc1'
gem 'pg', '0.17.1'