Ruby

PerlにおけるRubyライクなブロックにまつわる、関数のプロトタイプについてのまとめ。

Amon2のbasic flavorな自動出力を眺めていたら、"script/myapp-server"*1にこんなソースが有りました。 my $app = builder { enable 'Plack::Middleware::Static', path => qr{^(?:/static/)}, root => File::Spec->catdir(dirname(__FILE__), '..'); enable…

Rakefileの勘所

あー、毎回watchコマンドとかbuildコマンドとかを打ち込むのはやだなー、ビルドスクリプト書きたいなー、Makefileで十分かCakefileにするかRakefileにするか、よっしゃRakefileにしよう、あれーどういうふうに書けばいいんだっけかなーと、プロジェクトを作…

Ruby環境構築メモ

最新のcocoapods(0.29.0)はRuby2.xじゃないとダメっぽいとのことで、ついでにRubyの環境を整理したのでメモしておきます*1。 rbenv導入 インストールは既にしてあったのですが放置していたので使うことにしました。brewでインストールしていたrubyは一掃。 $…

WSGI/Rack/PSGIの登場の背景

何番煎じ変わりませんが、WSGI/Rack/PSGIに関して、何でこれらが必要とされるようになったのか、歴史的経緯を踏まえて色々調べたので、記録しておきます。ただし、特に歴史的な話に関しては、ネットで自分が納得できるまで探りはしましたが、正確性を欠くか…

swap色々

ちょっとした小ネタです。Cでswapをするには、マクロやポインタを使えば出来ます。 // int値の交換 #include <stdio.h> void swap(int* a, int* b) { int t = *a; *a = *b; *b = t; } int main(void) { int a = 0, b = 1; printf("%d, %d\n", a, b); swap(&a, &b); pr</stdio.h>…

お名前.com VPS(KVM)にRVM+Ruby1.9.3+Rails3+Capistrano+Unicorn+nginxな環境を作ったお話

自鯖が入用だったので、いい機会だったのでVPSを契約することにしました。で、Rails環境を整える必要があったので、色々挑戦してみた記録です。契約から2日がかりで、正直結構大変でした。メモは一切とってなかったので思い出しながら書いています。 サーバ…

CodeVS2で書いたソースコード

決勝が終わったようなので、せっかく書いたので置いておきます。いやほんと色々Rubyの勉強になりました。ちなみに、ランカーの人がコード公開しています。https://github.com/shohei909/CODE_VS_2.0上位の人はみんなC, C++かと思ってましたが、C#でちょっと…

RailsでJavaScriptライブラリの配置に迷う

Railsでは、app/assets/以下に各種JavaScriptやCSSなどを配置しますが、巷のJavaScriptライブラリには、JavaScriptとCSSと画像がセットになっているケースがしばしばあります。この時、特に厄介なのがCSSと画像です。CSS内で背景画像が相対URLで指定されてい…

Railsの*_pathと*_urlに関するメモ

「RailsによるアジャイルWebアプリケーション開発 第4版のp.120、David曰く」で解説されてます。 *_urlは絶対パス*1で、redirect_toで用いる*2。 *_pathはルート相対パス*3で、redirect_to以外ではこれで問題ない。特にlink_toなんかでは、無駄な出力が省け…

Rubyで変数名を指定してインスタンス変数を書き換える方法

気がついたら、年が明けてました。あけましておめでとうございます。早速本題に入ります。JavaScriptはプライベートなど無くフリーダムなのでthis[key] = valueの形でプロパティを書き換えられますが、Rubyではself[key] = valueとはできません。はてと思い…

Rubyの多次元配列は要注意

これはRubyに限った話では無いのですが、何回もこれが原因のエラーを出しているので自戒の意味を込めてメモ。 初期化するときはブロックを使う これ鉄則。 irb(main):003:0> aa = Array.new 2, Array.new(2) => [[nil, nil], [nil, nil]] irb(main):004:0> a…

Rubyのアクセス演算子'.'と'::'の違いと使い分けの考察

基本 Rubyにはモジュールなどのプロパティにアクセスするのに.と..の2つの演算子があります。例えば、 module Hoge def self.huga end end なら、Hoge::hugaに対して Hoge.huga Hoge::huga() の2通りの書き方が出来ます。 .と::の違い マニュアルにちゃんと…

rubyで--debugオプション指定時に出る "warning: `&' interpreted as argument prefix" の対処法

def hoge(&block) proc &block end のようにすると、タイトルのwarningが出ます。Rubyでは&の付く変数は def hoge(&block) proc(&block) end のように、ちゃんと括弧で囲むのが推奨されているようです。

Rubyの範囲演算子は降順のイテレートには使えない

かなりハマったのでメモです。 範囲演算子 Rubyには..と...の2種類の範囲演算子があります。実態はRangeクラスで、Range#eachメソッドでfor文のように使うイディオムがあります。 irb(main):005:0> (0..2).each { |i| p i } 0 1 2 => 0..2 irb(main):006:0> …

RailsによるアジャイルWebアプリケーション開発を読む

興味と必要にかられてRubyとRoRを勉強し始めたので、そのメモです。まず「たのしいRuby」を買いました。そして3時間ぐらいでざっと読み終え*1、早速Railsを触ってみることにしました。とりあえず、鉄板の「RailsによるアジャイルWebアプリケーション開発(第…