valid,invalid

関心を持てる事柄について

Ruby

ag を使った複数行にわたる grep

既存コードで .all とかやっている場所を ag である程度まで*1洗い出そうと正規表現と格闘した。 ag 'users?(.where.+)?.all' みたいなので単一行のユースケースは良い感じに絞り込めたものの、メソッドチェーンしているやつ (multi line) が拾えないよと同…

automaildoc gem でメール一覧と文面を自動生成する

RSpec からメール一覧を自動生成する gem を書いてみた。 github.com 使い方 gem を install したのちコマンドラインから AUTOMAILDOC=1 rspec を走らせるとメールを一覧表示するHTMLを生成する。 名前も設計もほとんど autodoc を参考にしている。 背景・課…

Gem の install / uninstall フックの使い方

Git hook を手軽に管理できる husky の Ruby 版が欲しいかもと思い最近 rusky という gem を作っている。 github.com gem install 時に Git hook スクリプトを自動生成し、uninstall 時には勝手に消してくれる感じにしたい。そんなわけで gem のインストール…

bundle install を --jobs=N で高速化

公式に思いっきり書いてあったけど知らなかった。 --jobs=[<number>]: The maximum number of parallel download and install jobs. The default is 1. .zshrc にも突っ込んでおいた。</number>

Rails の cookie session をデコードする

staging のアプリケーションでのみ起こるバグを調査している折、どうやらセッションにちゃんと値をセットできていないぽいと気付いた。 そのアプリは cookie session を採用していたので簡単に暗号化された値は手に入ったが、これはどうやったらデコードでき…

更新時に updated_at, created_at を更新しない

record_timestamps に false をセットすることで、更新時の updated_at, created_at へのオートフィルをスキップすることができる。 # Active Record レベル ActiveRecord::Base.record_timestamps = false # モデルのみ User.record_timestamps = false # …

親モデルの save / valid? 時に Embedded Document の validation callback が呼ばれない

class User include MongoMapper::Document end class Address include MongoMapper::EmbeddedDocument embedded_in: user key :city validates_presence_of :user end user.address.city = nil user.address.valid? #=> false user.valid? # => true user.s…

Ruby で文字列を改行コードで区切る

csv_body = "line 1\r\nline 2\nline 3\rline 4" csv_body.lines # => ["line 1\r\n", "line 2\n", "line 3\rline 4"] # String#lines は \r を改行コードとみなさない csv_body.lines.map(&:chomp) # => ["line 1", "line 2", "line 3\rline 4"] # さらに S…

AWS SDK v2 で S3 からファイルダウンロード

aws-sdk を使って S3 からバイナリファイルをローカルマシンにダウンロードする方法メモ。 ググッてヒットするのが v1 の情報ばかりで惑ったがとりあえず以下の読んでなんとかした。 Downloading Objects from Amazon S3 using the AWS SDK for Ruby - AWS D…

『メタプログラミング Ruby 第2版』1章 頭文字A 読む

1章はイントロダクションで、メタプログラミングのイメージを膨らませる。 Summary とりあえずのメタプログラミングの定義はコードを記述するコード Ruby では実行時に言語要素に質問することができる これをイントロスペクションという 実行時にクラスの情…

『メタプログラミング Ruby 第2版』読む

昨年末の RubyKaigi 頃にそろそろ Ruby プログラマとして一人前になろうと思い買ったが真ん中ぐらいまでで読み捨ててた。 内容めちゃ面白かったのは覚えてるが身についたとは言いがたいので、再読しながらちゃんと手を動かしたい。 amzn.to

9/14学んだこと / 読んだもの

昨日から腹が痛いと思っていたら胃腸炎にかかったらしく、頭が働かない…。 ほぼ寝てたのでいくつか読んだだけ。 Ruby pythonでいうところのvirtualenvをrubyでどう実現するのか、ずっと調べないまま放置してたので学んだ。 Mac OSX 10.9(Mavericks)で最新のP…

9/1学んだこと / Ruby入門 / Vagrant@dotinstall / MongoDB@dotinstall / 読んだもの

Ruby プログラミング言語Ruby買ってみた。イントロダクションから既に知見がある。 メソッドに別名を付けられる class Sequence def length return 0 if @from > @to Integer((@to - @from)/@by) + 1 end alias size length # sizeはlengthの同義語 end 算術…

8/31学んだこと / Rubyのイディオム幾つか / US keyboard感想 / 読んだもの

Ruby なんだかんだ最近Ruby書いてなくて既に忘れそう。 幾つかの簡単なプログラミングクイズ解きながら、基本文法を思い出しつつ新しいイディオムをインプットする。 定常的に書いていこう。 n.times.map Integer.times.map { }という、複数回同じ処理を繰り…

8/10学んだこと / Ruby開発環境 ( vim / Vagrant ) / CoffeeScript / jbuilder / 英語

Ruby 今更ながら、Rubyの開発環境について何も知らなかったので色々調べていた。vimが主流ぽい。 vim JavaはEclipe、PythonはAtomで書いてきたのでvim力が低い…。vim力上げていきたい。 $ brew unlink vim $ brew install vim --with-lua $ curl https://raw…

8/7学んだこと / Ruby on Rails@codecademy

Ruby on Rails codecademyのRuby on Rails講座を100%完了したけど、これで何か作れるかというと相当厳しいと思うので何か作ってみる。

8/4学んだこと / Ruby on Rails@codecademy

Ruby on Rails codecademyのRail講座始めて65%ぐらいまで進めた。 基本的なコマンドから学んでる。 rails new bundle install rails generate model Message a model file in app/models/message.rb. The model represents a table in the database. a migra…

8/3学んだこと / Ruby@codecademy / CoffeeScript文法

Ruby codecademy を100%まで達成した。 attr_accessor setter / getter 的な。 module You can think of modules as being very much like classes, only modules can't create instances and can't have subclasses. They're just used to store things! sc…

8/2学んだこと / Ruby@codecademy / 英語

Ruby codecademy のRuby講座を90%まで進めた。今日カバーしたところは経験した言語にない、または似てるけど異なる要素があって面白かった。 Zen of Ruby There's always more than one way to do something in Ruby. Java, Pythonとは違う精神。Perlでは馴…

8/1学んだこと / Ruby@codecademy

初日から飛ばすとあとが辛い事例にならないようライトに勉強した。 Ruby 思い起こせばPythonも最初はcodecademyから始めたので、Rubyもとりあえず基礎はこちらでやってみる。 Learn to codewww.codecademy.com 基本文法を書きながら覚えられてよい。 プログ…