Ruby,Railsのチートシート
2015/10/11
こういうのブログ形式じゃなくてwikiの方が良いのでは。。
と、遠い目をしつつ。
Contents
Ruby
文字のある位置から末尾を取り出したい
sliceを使う。
rangeのオシリを-1と指定することで末尾を指定できる。
1 |
'hogehuga'.slice(2..-1) |
URIのqueryなどを上書きしたい
https://hogehuga.com?query=q => https://hogehuga.com?hoge=huga
みたいな変換をしたい。
1 2 |
uri = URI.parse(awesome_url_string) uri.query = 'hoge=huga'.to_param |
あらゆる空白文字ごとで分割したい
単なるスペース以外に とかよく分からない空白文字がある。
これらを一律で空白として扱って分割対象にしたい。
1 |
'hoge huga'.split(/[[:space:]]/) |
https通信しようとすると『OpenSSL::SSL::SSLError: SSL_connect returned=1 errno=0 state=error: certificate verify failed』と表示されて通信失敗する(Mac)
証明書の検証を無視する対処法が散見されたがちょっとアレなので、無視しない方向で解決したかった。
こちらがとても参考になった。
http://qiita.com/a_ishidaaa/items/51689d3aa753a904522e#comment-d7fff87a5cb11dd7b427
実際にopensslをインストールすると以下のようなメッセージが表示される。
1 2 3 4 5 6 7 8 9 10 |
brew install openssl blah blah... A CA file has been bootstrapped using certificates from the system keychain. To add additional certificates, place .pem files in /usr/local/etc/openssl/certs and run /usr/local/opt/openssl/bin/c_rehash |
なので、下記のようなコマンド群を実行すればOK
1 2 3 |
cd /usr/local/etc/openssl/certs wget http://curl.haxx.se/ca/cacert.pem /usr/local/opt/openssl/bin/c_rehash |
無事にhttps通信できた。
ある2つの配列からハッシュの配列を生成したい
1 2 |
name_list = ['alice', 'bob', 'john'] favorite_artist = ['U2', 'Oasis', 'Coldplay'] |
この2つの配列から
1 |
[{"name"=>"alice", "favorite_artist"=>"U2"}, {"name"=>"bob", "favorite_artist"=>"Oasis"}, {"name"=>"john", "favorite_artist"=>"Coldplay"}] |
こんな感じのハッシュの配列をつくる。
- 元の配列をキーと値を持った配列に変換する
- それぞれの配列をzipでまとめつつ、flattenで展開した配列からHashを生成する
1 2 3 4 5 6 7 8 9 10 11 |
name_list = ['alice', 'bob', 'john'].map { |name| ['name', name] } => [["name", "alice"], ["name", "bob"], ["name", "john"]] favorite_artist_list = ['U2', 'Oasis', 'Coldplay'].map { |artist| ['favorite_artist', artist] } => [["favorite_artist", "U2"], ["favorite_artist", "Oasis"], ["favorite_artist", "Coldplay"]] name_list.zip(favorite_artist_list) => [[["name", "alice"], ["favorite_artist", "U2"]], [["name", "bob"], ["favorite_artist", "Oasis"]], [["name", "john"], ["favorite_artist", "Coldplay"]]] name_list.zip(favorite_artist_list).map { |array| Hash[*array.flatten] } => [{"name"=>"alice", "favorite_artist"=>"U2"}, {"name"=>"bob", "favorite_artist"=>"Oasis"}, {"name"=>"john", "favorite_artist"=>"Coldplay"}] |
Rails
link_toであるコントローラのメソッドを簡潔に指定したい
例えばPostモデルのコントローラのnewに飛ばす場合
1 |
link_to 'リンクテキスト', new_post_path |
new_post_pathのようなエイリアス一覧を確認する場合は
1 |
rake routes |
でいける。