Ruby
既存コードで .all とかやっている場所を ag である程度まで*1洗い出そうと正規表現と格闘した。 ag 'users?(.where.+)?.all' みたいなので単一行のユースケースは良い感じに絞り込めたものの、メソッドチェーンしているやつ (multi line) が拾えないよと同…
RSpec からメール一覧を自動生成する gem を書いてみた。 github.com 使い方 gem を install したのちコマンドラインから AUTOMAILDOC=1 rspec を走らせるとメールを一覧表示するHTMLを生成する。 名前も設計もほとんど autodoc を参考にしている。 背景・課…
Git hook を手軽に管理できる husky の Ruby 版が欲しいかもと思い最近 rusky という gem を作っている。 github.com gem install 時に Git hook スクリプトを自動生成し、uninstall 時には勝手に消してくれる感じにしたい。そんなわけで gem のインストール…
公式に思いっきり書いてあったけど知らなかった。 --jobs=[<number>]: The maximum number of parallel download and install jobs. The default is 1. .zshrc にも突っ込んでおいた。</number>
staging のアプリケーションでのみ起こるバグを調査している折、どうやらセッションにちゃんと値をセットできていないぽいと気付いた。 そのアプリは cookie session を採用していたので簡単に暗号化された値は手に入ったが、これはどうやったらデコードでき…
record_timestamps に false をセットすることで、更新時の updated_at, created_at へのオートフィルをスキップすることができる。 # Active Record レベル ActiveRecord::Base.record_timestamps = false # モデルのみ User.record_timestamps = false # …
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…
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 を使って S3 からバイナリファイルをローカルマシンにダウンロードする方法メモ。 ググッてヒットするのが v1 の情報ばかりで惑ったがとりあえず以下の読んでなんとかした。 Downloading Objects from Amazon S3 using the AWS SDK for Ruby - AWS D…
1章はイントロダクションで、メタプログラミングのイメージを膨らませる。 Summary とりあえずのメタプログラミングの定義はコードを記述するコード Ruby では実行時に言語要素に質問することができる これをイントロスペクションという 実行時にクラスの情…
昨年末の RubyKaigi 頃にそろそろ Ruby プログラマとして一人前になろうと思い買ったが真ん中ぐらいまでで読み捨ててた。 内容めちゃ面白かったのは覚えてるが身についたとは言いがたいので、再読しながらちゃんと手を動かしたい。 amzn.to
昨日から腹が痛いと思っていたら胃腸炎にかかったらしく、頭が働かない…。 ほぼ寝てたのでいくつか読んだだけ。 Ruby pythonでいうところのvirtualenvをrubyでどう実現するのか、ずっと調べないまま放置してたので学んだ。 Mac OSX 10.9(Mavericks)で最新のP…
Ruby プログラミング言語Ruby買ってみた。イントロダクションから既に知見がある。 メソッドに別名を付けられる class Sequence def length return 0 if @from > @to Integer((@to - @from)/@by) + 1 end alias size length # sizeはlengthの同義語 end 算術…
Ruby なんだかんだ最近Ruby書いてなくて既に忘れそう。 幾つかの簡単なプログラミングクイズ解きながら、基本文法を思い出しつつ新しいイディオムをインプットする。 定常的に書いていこう。 n.times.map Integer.times.map { }という、複数回同じ処理を繰り…
Ruby 今更ながら、Rubyの開発環境について何も知らなかったので色々調べていた。vimが主流ぽい。 vim JavaはEclipe、PythonはAtomで書いてきたのでvim力が低い…。vim力上げていきたい。 $ brew unlink vim $ brew install vim --with-lua $ curl https://raw…
Ruby on Rails codecademyのRuby on Rails講座を100%完了したけど、これで何か作れるかというと相当厳しいと思うので何か作ってみる。
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…
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…
Ruby codecademy のRuby講座を90%まで進めた。今日カバーしたところは経験した言語にない、または似てるけど異なる要素があって面白かった。 Zen of Ruby There's always more than one way to do something in Ruby. Java, Pythonとは違う精神。Perlでは馴…
初日から飛ばすとあとが辛い事例にならないようライトに勉強した。 Ruby 思い起こせばPythonも最初はcodecademyから始めたので、Rubyもとりあえず基礎はこちらでやってみる。 Learn to codewww.codecademy.com 基本文法を書きながら覚えられてよい。 プログ…