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

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

Rails - ActiveModel::Callbacksでカスタムコールバックヘ(^o^)ノ

あけましておめでとうございます。 年内で仕事が納まらず、1日からコードをごりごり書いております。。。 さて、ActiveRecord::Callbacksはみなさんおなじみ before_saveとか良く使いますよね? でも、今回やりたい事はこういうの # app/models/comment.rb c…

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

今年最後のShinosaka.rbを開催しましたー DoorKeeper - Shinosaka.rb #11 みなさんのおかげで1年を通して開催することができました。 来年からShinosaka.rbはLTタイムをつくるよー 参加者のなぜ???やRubyに関する困りごとをLTしてもらって、みんなで解決…

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ってことは、そう…

Rails - touchオプションでupdated_atを更新するヘ(^o^)ノ

class Post < ActiveRecord::Base has_many :comments end class Comment < ActiveRecord::Base belongs_to :post end pry(main)> Post.find(1) +----+-------------+------+-------------------------+-------------------------+ | id | title | body | cr…

Railsでpostした時間を○○minutes agoみたいに表示するヘ(^o^)ノ

今日、Twitterで@netwillnetさんと@chiastoliteさんのツイートをみてやってみた @netwillnet time_ago_in_wordsすかね— Hiroyuki Morita (@chiastolite) 2014, 11月 17 Railsではtime_ago_in_wordsヘルパーが用意されています でも、この子はリアルタイムで…

Railsでデータを登録後にメールを送信ヘ(^o^)ノ

Railsでユーザ登録後にメール送信することはよくあります。 今日、その部分を見てて気になったのでメモ程度に もともとはこんな感じのコードやった # app/controllers/user.rb def create @user = Post.new(user_params) @user.save UserMailer.wellcome_ema…

RubyWorld Conference day 1 ヘ(^o^)ノ

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

Gretelで簡単パンくずリストヘ(^o^)ノ

Railsでパンくずリストを表示するのにGretelをつかってみた 基本的な使い方ー # config/breadcrumbs.rb crumb :root do link 'Home', root_path end crumb :posts do link 'Posts', posts_path end crumb :post do |post| link post.title, post parent :pos…

RansackでDateTime型の検索してみるヘ(^o^)ノ

Ransackはとっても便利ですよねー さらっとしか使えてないので、ちょっと調べてみました eqは完全一致、contは中間一致 などなどとっても簡単に検索機能を実装できます そこでDateTime型のフィールドを検索したい場合、時分秒までは検索しないですよね? や…

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

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

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

Shinosaka.rb #9を開催しました 今日は和室でもくもく会 #shinosakarb pic.twitter.com/nePBb2RexO— ちまめ (@chimame_rt) 2014, 10月 25 Shinosaka.rbに行ってきた。良かった。 むらじゅんさんに付きっきりで教えてもらいました。 「シンボル」についての長…

Railsのdiv_forヘルパーを使ってみたヘ(^o^)ノ

Railsのヘルパーでdiv_forなるものがあります。 この子ちょっと便利で、いわゆるページ内リンクを実装できます。 使い方は <% @post.comments do |post_comment| %> <%= div_for post_comment do %> <%= post_comment.comment %> <% end %> <% end %> すると…

gitでエイリアスを設定するヘ(^o^)ノ

Git

毎日、gitを使ってるとgit xxってコマンドを何回も打たないとイケない... つらい 面倒くさがりな僕が大好きエイリアス よく使うのは、git status、git log、git checkout、git branchといったとこでしょうか? gitの設定はsystem、global、カレント?(なんて…

RSpecでhas_manyのテストヘ(^o^)ノ

Railsでhas_manyなテストするときー こんなのをテストしたい場合 RSpec.describe Address, :type => :model do describe 'Relation' do it 'has many customers' do expect(address.customers).to match_array customers end end end まずは、FactoryGirlで…

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…

RSpecでおっそーいテストを特定するヘ(^o^)ノ

今日は、プロジェクトチームで呑みでしたー٩( ‘ω’ )و ホントに良いチームだなーって思います。 このチーム、まじで楽しいのだよwww さて、今のプロジェクトでJenkinsが遅いのです。。。 スタブやモックを利用するのもありです。 RSpecのオプションに-pなるオ…

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…

Osaka.vim #2に参加したよーヘ(^o^)ノ

Vim

前回キャンセルしてしまったOsaka vimに参加しましたヘ(^o^)ノ @iyuuya先生の初心者講座を終えた後、みんなでもくもくしてましたー Vim Beginners Lesson 楽しかったですよー 懇親会はおじさんパワー全開でしたが。。。(;・∀・) 僕の今日の進捗は、VimAwaso…

ConoHaにCoreOSをインストールしたヘ(^o^)ノ

Bloggerからはてなへ移動しましたー٩( ‘ω’ )و 理由はなんとなくですw 最近、Dockerを使って遊んでます。 さくらのVPSを使っていたのですが、以下の理由からConoHaへ さくらは最低使用期間(3ヶ月)がある ConoHaはすべて初期費用が無料 ローカル接続対応 CoreO…