Ruby

A template needs to have a virtual path in order to be refreshed

Rails 4.0.0.rc1データベースに入れたerbを解釈して欲しい時は <%= render :inline => block.body %> のようにすればよい。でもnilが入っていると、 A template needs to have a virtual path in order to be refreshedと出る。 わっかりにくいエラー。

sorceryのブルートフォースアタック対策モジュールを使ってみた

Rails 4.0.0.rc1 sorcery (0.8.1) はじめに ブルートフォースアタックとは、手当たり次第パスワードの入力を試みる攻撃方法。こわいです。 (http://ja.wikipedia.org/wiki/総当たり攻撃) sorceryとは シンプル認証ライブラリ。 コア以外の機能は、サブモジュ…

Rubyistビギナーが最近Rubyを書いてて思ったこと

Ruby、どんなに汚くても動くけど、翌日その書いたコードを見ると理解するまでに時間がかかることがよくある。 たぶんこれって可読性がないから。 コードの消費期限をあげるためとか最近自分が意識していること 適切なメソッドを使う イテレータは、論理判定…

Hash、Arrayでソート

Ruby2.0.0p-0 たまにすごく使うのでメモ。 sort_byはブロックに与えられた値でソートするっぽい。ベンリー。 Hash hash = {"宗教"=>5, "墓石"=>1, "お骨"=>4, "お寺"=>3, "施設"=>1, "檀家"=>1} キーでソート hash.sort_by{ |key, value| key } # => [["お寺…

Rubyで正規表現を使ったメモ

ruby2.0.0正規表現を使う時はいつもググっていたけど最近ようやく手に馴染んできた。 パーセント(%)記法 %記法を使うことで区切り文字を任意のものを使う事ができる。 デフォの/だと、式中のスラッシュをエスケープする必要があるので、別の区切り文字を使っ…

hamlからerbに変換する

hamlを使おうと思ったものの慣れなかったので速攻戻した。 ググるとerb→hamlはたくさんあったけど、その逆は英語の記事しかなったのでメモ。変換にはhaml2erbというgemを使う。 公式を見ると1.9.1でのテストはやったよとのことなので1.9.1を使う。 $ rvm use…

正規表現でキーワードリンクする

ruby-2.0.0-p0正規表現を使ってキーワードリンクをやってみた。 動かす予定の環境のキーワード数は今のところ、400個くらいなので正規表現でまだ許容範囲だと思っている。 5000とかいったらtrieを使ってやるしかない感じっぽい。 def auto_word_link body wo…

CSVのヘッダーをハッシュのキーとして使って行の要素にアクセスする

ruby-2.0.0-p0 CSVを読み込む時に配列要素番号で拾うと後で読む気がしなくなります。 # test.csv id, name 1, a 2, b 3, c# array_to_hash.rb require "csv" csv = CSV.open("test.csv") header = csv.shift csv.each do |row| p Hash[header.zip(row)] end …

csv読み込んで1レコードを1ファイルに吐き出す

ruby1.9 以下のようなcsvファイルを読み込みこんで、レコード毎に1ファイル書き出す。 post_name, post_title, post_content aaa, bbb, ccc aaa, bbb, ccc aaa, bbb, cccrequire "csv" require "FileUtils" csv = CSV.open("park.csv", "r") csv.shift dir =…

配列で同じ要素順同士を加算する

ruby-1.9.3-p392 [1, 1, 1] + [3, 3, 3] || [4, 4, 4]としたい。 b = [1, 1, 1] [1, 3, 5].map.with_index{|a, i| a + b[i]} # => [2, 4, 6] [1, 2, 3].zip([1, 4, 3]).map{|s| s.inject{|s, e| s + e}} # => [2, 6, 6] 要素番号を指定するのRubyっぽくない…

引数を省略する

ruby-1.9.3-p392時間操作系メソッドを書いていてテストしやすいものを書きたいし、中でDate.todayとかしたら使い回し出来なさそうというのが最近の悩みの種だった。 そこで引数を省略できればいいのになあということで調べた。 def cola args={} p args[:nam…

今日の日付の文字列を取得

Time.now〜〜 ではなくて Date.today がよい。 2.0.0-p0 :008 > Date.now NoMethodError: undefined method `now' for Date:Class from (irb):8 日付系ならnowメソッドあるあると思ったらDateクラスにはない。 一時期、Time.now.to_date.to_sとかやっていま…

pryから抜けたい時

Rails3 rake db:seed実行後、100くらいのループ中にbinding.pryを仕込んでしまったことに気がつくも[Ctrl + c]では回避できなくてやばくなったけど以下を入力すればpryから脱出できる。 exit-program 参考記事 http://d.hatena.ne.jp/miyohide/20120412/1334…

capistranoを使って自分の環境で必要になった設定とかについて

メモ capistranoとは デプロイ自動化を目的に作られたツール。 主な機能は、 SSHで入ってデプロイに必要なコマンドを実行してくれる デプロイ中にコケたらロールバックしてくれる デプロイ実行した日時毎にディレクトリを作ってくれる 自分の環境で必要にな…

rvmェ.....

(nginx + )Passengerをインストールする時、下記コマンドをうつのだけど、ここには大きな罠がある。 sudo passenger-install-nginx-moduleこのコマンド実行すると、passengerのパスが表示され、nginx.confに書き込むように指示される。 パスを見ると、マシン…

クロージャをオブジェクトっぽく使う

連想配列のオブジェクトをクロージャにすると、オブジェクトっぽく振る舞うようになった。 Javascript function closure_factory(name, age){ var animal = {}; animal.name = name; animal.age = age; animal.say = function(){ return animal.name + "_" +…

RubyKaigi2012の感想

三日間開催された札幌Ruby会議2012。 後半は若干だれていましたがぼっちでのフル参加が無事終わりました。プログラマとは何だろう?と改めて考えさせられる発表が多くあり、大変貴重な体験となりました。 また、自分がプログラマに憧れ始めた気持ちを思い出…

札幌Ruby会議2012に参加します

初参加です。 色んなもの持って帰れたらいいなーと思います(^o^)

グラフ共有サービス『ぐらふふ』作りました。

#忘れないうちにメモhttp://graph-hu.herokuapp.com/ ぐらふふ 簡単なグラフを共有するWEBサービスです。 グラフを作成するにはTwitterアカウントが必要です。 開発環境 OS X 10.7.4 Rails 3.2.6 ruby 1.9.3p125 開発の経緯 ランニングの距離とか体重をグラ…

NoMethodError と NullPointerException

Rubyでぬるぽがないですねみたいな。 javaのぬるぽ Javaの例外のひとつに『NullPointerException』ってあります。いわゆる『ぬるぽ』です。この『ぬるぽ』は、Nullが入っている参照型変数を参照しようとすると発生するようです。 Unko normal = null; nomal.…

empty?とblank?とnil?

環境 ruby 1.9.3p194 Rails 3.2.3 空文字列 "".empty? # true "".blank? # true "".nil? # false 空配列 [].empty? # true [].blank? # true [].nil? # false 空ハッシュ {}.empty? # true {}.blank? # true {}.nil? # false 空Proc Proc.new{}.empty? # NoM…

正規表現を使って複数の値を抜き出す

の備忘録。 コード /(\d{2})-(\d{2})-(\d{3})-(\d{2})/ =~ "12-34-567-34" puts $0 puts $1 puts $2 puts $3 puts $4 結果 regular.rb 12 34 567 34 メモ "( )"を使うとグルーピングできる。 "*?"で0回以上最短マッチ。 "\D"は数字以外。 "\d"は数字。 "{3}"…

関連名を変える

概要 関連付けているテーブルから、関連するレコードを呼ぶ時にデフォルトだと @member.member_image のようになる。すごくださいし、ActiveRecordっぽくないので以下のように呼び出したい。 @member.image 時の備忘録。 環境 Rails 3.2.3 ruby 1.9.3p194 (2…

nilの時実行しない とか

備忘録 nilの時実行する a ||= "initizloize" a ||= "" p a 変数aがnilの時に代入が行われるので、出力は"initizloize"となる。 nilの時実行しない p box = "ice" if nil 代入は行われないので、出力はnilとなる。 nilの時こっちを実行 p box = nil ? "it's …

配列要素の合計を求める書き方

悪い score = [10 , 20 , 30 , 40 ] sum = 0 score.each do | v | sum += v end p sum 普通 score = [10 , 20 , 30 , 40 ] p score.inject{ | sum , v | sum + v }

Array#detect調べた

ブロック内で最初にtrueになった要素を返す。 score = [10 , 20 , 30 , 40 ] p score.detect { | v | v > 20 } 30

ブロックとクロージャ

Rubyのブロックとは ブロックっていうのは引数とは別で、命令の塊です。以下のようなものがブロックです。 do end { } do~~~endは複数行、{ }は一行の時に使うことが慣習としてあるようです。ちなみにブロックだけでは、存在することができません。 "文字列…

Array#mapを調べた

ruby 1.9.3p0 (2011-10-30 revision 33570) [x86_64-darwin11.3.0] eachと何が違うのかわからないし、mapって普段使わないのでちょっと調べてみた。mapというのは、『(レシーバの)配列の"各要素"をブロックの中の最後の値に置き換える』と認識した。 配列の…

rvmでプロジェクトごとにgemsetを読み込む

ディレクトリに .rvmrc を置くとそのディレクトリで.rvmrc内の設定になる。.rvmrc rvm 1.9.3@hoge_gemset 上記だと、1.9.3 の hoge_gemsetにする。rvmrcを作成後、そのディレクトリにcdすると英語でこのrvmrc信頼していいか聞かれるけど"y"でよい。

rakeを使ってみる

Railsでrakeをいっぱい叩くけど自分はなんなのかよくわかってなかったです。 rake? Rakeっていうのはビルドツールの一種らしい。 C言語のmakeと同じ(らしい)。 rake! rakeコマンドを実行した時、引数を渡すと引数に一致するrakefile内のブロックを実行する…