Ruby

RailsでYAMLに定義したカスタム設定を使う

Railsで自分で定義したYAMLファイルをロードしてアプリケーションで使いたい! ってことでやってみますー 僕がRailsでカスタム設定といえば、そうこの子です! github.com Latest commit 0ae134b on Aug 7, 2014 なるほど、開発やめちゃったんだねー そう言…

【現場で役立つシステム設計の原則】データとドメインモデル

最近、現場で役立つシステム設計の原則をよみ直している データベースにはコトを、ドメインモデルには業務ロジックを記述していく このことを考えるとデータベースをアップデートすることは、マスターデータ以外はそうはなさそう 例えば、商品名は変更するこ…

Arrayでinjectを使ってみるヘ(^o^)ノ

injectはとても便利( ˘ω˘) [1, 2, 3].inject(:+) #=> 6 こんな感じで読みやすくていい感じ total_price = 90 total_price += [10, 20].inject(:+) #=> 120 Railsのバリデーションとかで使うならこんな感じかな # 以下の値を仮定 limit_total_price = 100 tot…

Enumerable#partitionでブロックの評価が真と偽の要素に分ける٩( ‘ω’ )و

いままでブロックで評価して真のものはselectで、それ以外はrejectとか2回やってた... でも、これ1回でできたらおしゃれですよねー そんなときはEnumerable#partition こんなかんじ( ˘ω˘) array = ["cat", 1, 2, "dog", 0.1] numbers, non_numbers = array.…

RubyのHashで要素数を取得するヘ(^o^)ノ

Hashで要素の数を取得してみる Hash#lengthとHash#size favorites_language = { bob: 'Ruby', jone: 'Ruby', tiger: 'Perl' } favorites_language.length #=> 3 favorites_language.size #=> 3 Enumerable#count favorites_language = { bob: 'Ruby', jone: …

第65回 Ruby関西 勉強会に参加したよヘ(^o^)ノ

第65回 Ruby関西 勉強会に参加し、発表してきました。 発表内容はRails4.2の新機能について。 4.2がリリースされてから2ヶ月が経ちますが、ActiveJob中心に紹介させてもらいました。 発表中にデモする時があると思います スライド見ながらタイプするの大変で…

神戸.rb Meetup #10に行ってきたよヘ(^o^)ノ

今日は神戸.rb Meetup #10に行ってきた。 仕事が押して1時間ほど遅れてしまったけど。。。( ̄▽ ̄;) みんながそれぞれ興味あることをワイワイ話したり、もくもくしたりと良い感じです。 おやつもあるっ!!! 僕はcocoon(こくーん?)ってgemを使ってみまし…

DXRubyでプロ生ちゃんを動かしてみたヘ(^o^)ノ

これはプロ生ちゃんAdvent Calendar 2014の18日目の記事ですヘ(^o^)ノ プロ生ちゃんの素材とDXRubyを使って、プロ生ちゃんを動かしてみます。 DXRubyとはゲーム開発初心者向けのDirectXライブラリ 注) 32bit版のRubyでのみ動作します DirectXということは…そ…

Shinosaka.rb #10を開催したよーヘ(^o^)ノ #shinosakarb

Shinosaka.rb #10 今回のお題はLitaであそうぼうーです( ˘ω˘) 同じ日に第1回 Hubot×ChatOps勉強会が開催されていたので... Hubot先生はJavaScript。 仕事でも、ProductでなければRubyでがんばりたい!(開発環境とかチャットとか LitaはRubyってことは、そう…

RubyWorld Conference day 1 ヘ(^o^)ノ

RubyWorld Conference 2014に参加してきましたー 前日に松江入りヘ(^o^)ノ 錦織 圭も帰国して食べたい!と言っていたのどぐろー day 1 ホテルを出て、「さむーっ」(((((((( ;゚Д゚)))))))) Matzの基調講演 Rubyが教えてくれたこと 毎年、Matzの基調講演は楽し…

Railsで同じwhere句のチェインヘ(^o^)ノ

チェインかチェーンかはさておき Railsではメソッドチェインは普通に使いますよね? scopeのチェインもよく使います こんな感じ Post.user_by(@current_user).search_tag_by('Ruby') では、動的に利用したいscopeを利用したい場合は? scopeではないですが、…

Rubyで実行ファイルのパスを取得するヘ(^o^)ノ

__FILE__は実行ファイルのパス、カレントパスを取得できます。 __FILE__は実行ファイルのファイルパスを取得できます。 Railsではevalを多様しています。 コードを読んでるとこんなのをよく目にします。 class_eval <<-RUBY, __FILE__, __LINE__ ... end な…

pry、pry-docを使ってRuby学習ヘ(^o^)ノ

Rubyでコードを書いているとメソッドの使い方をググったり、 ドキュメントみたりしますよねー そこで、pryとpry-docですよ! さらっと機能をご紹介♪ インストール $ gem install pry pry-doc 起動 コマンドラインでpryコマンドを実行します。 $ pry [1] pry(…

Rubyのブロックを使うヘ(^o^)ノ

こんなメソッドを作ってみる User = Struct.new(:name) user = User.new("murajun1978") def hello(name) "Hello, #{name}" end hello(user.name) # => "Hello, murajun1978" よくある感じ んじゃ、ブロックを使ってみよう User = Struct.new(:name) user = …

Rubyで消費税の計算やってみたヘ(^o^)ノ

こんなメソッドを作ってみます require 'bigdecimal' Order = Struct.new(:sub_total) def total(order, tax) (BigDecimal(order.sub_total) * BigDecimal(tax.to_s)).ceil end order = Order.new(100) total(order, 1.08) # => 108 でも、これじゃ毎回消費…

Arrayで指定範囲のデータを取得するヘ(^o^)ノ

module Enumerableメソッドでいっぱつ解決 # 1から100までの数値だけを取得したい場合 [1, 30, 4000, 10, 50, 8000].grep(1..100) # => [1, 30, 10, 50] # String型のみ取得したい場合 [100, "murajun", 40, 100000, "murajun1978"].grep(String) # => ["mur…

RubyのArray要素の計算ヘ(^o^)ノ

Arrayの要素を計算したいケースが多々あります。 代表的なものがこれ [1, 2, 3].inject(:+) # => 6 引数を渡したい! [1, 2, 3].each_with_object(1).map(&:+) # => [2, 3, 4] 二次元配列で要素ごとの集計 0番目、1番目、3番目の要素を集計しています。 [[1,…

Railsのmodelインスタンスでexists?を使うと...

Array#include?のレスポンス改善ヘ(^o^)ノで改善されたレスポンスですが、まだ遅いw と言うわけで、ログを眺めていましたー するとこんなクエリーが... 注) テーブル名は勝手につけた Post Exists (0.2ms) SELECT 1 AS one FROM "posts" LIMIT 1 コードを見…

Arrayの展開ヘ(^o^)ノ

Rails4からpluckが複数カラムに対応しましたねー こんな感じで、特定カラムの値が配列で取得できます。 Post.pluck(:title, :description) # => [["Murajun's Style", "Arrayの展開ヘ(^o^)ノ"]] とっても便利ですよねー んじゃ、カラムを動的に取得したいで…

Array#include?のレスポンス改善ヘ(^o^)ノ

仕事ですごーーーく遅い処理をなんとかしてほしいとの依頼。。。 コードを見てみると... Arrayをeachでまわして、include?で要素のチェックしてましたー 家に帰って調べてみたら、Setクラスなるものを発見。。。class Set @murajun1978 set を使うと速くなり…

Railsで子テーブルのスコープを使うヘ(^o^)ノ

例えばこんな感じのモデル class User < ActiveRecord::Base has_many :posts end class Post < ActiveRecord::Base belongs_to :user scope :published, -> { where(published: true) } end 公開中のPostを取得する場合はこんな感じですよね? $ Post.publi…

RSpec 3.1を使ってみたよヘ(^o^)ノ

さて、RSpec3.1がリリースされたので早速新機能をつかってみました。 Warnings flag .rspecファイルから--warningsがいなくなりました。 # .rspec --color --require spec_helper warningsを表示したい場合↓ # spec_helper.rb RSpec.configure do |config| c…