Ruby

bundlerでgemをインストールする時のメモ(インストール先指定とか)

gemのインストールを管理してくれるbundlerがとっても便利なんだけど。 sinatraみたいな軽量な物を使うときにシステムのgem領域を汚したくない。とか 複数アプリケーションを動かすなんて事もざらに有るとおもう。 そういう時は bundle install --path gems …

sinatraからactiverecordを使ってるとActiveRecord::ConnectionTimeoutErrorと出る

ActiveRecord::ConnectionTimeoutError 何かよく解らないけどコネクションエラーが出る。 どうもコネクションプールの辺りに問題が有るらしいがそれくらい勝手になんとかしておいて欲しいと思うのが本音。。。 対応策としてはここに書いてあるのを参考にして…

ruby gemをバージョンアップ, ダウンさせたい

バージョンダウンさせる 一旦アンインストールする gem uninstall -v 2.0.3 rubygems-update 好きなバージョンを入れる gem install -v 2.0.2 rubygems-update バージョンアップさせる バージョンダウンさせた時と一部同じ方法で(インストールとバージョン…

RubyOnRailsでsqlを直接指定する

極力ActiveRecordの標準に沿って書きたいけど、 やっぱ初動からそこを全部覚えるのが学習コスト高いなー。 と思ったら members = Member.find_by_sql( ["SELECT * from members WHERE name = ?", 'Taro']) こんな風に書ける。

Railsでちょこちょこ触りそうな予想のファイル#1

config/routes.rb # root to: "コントローラ名:アクション名"でドキュメントルート root to: "top#index" # httpメソット名 "パス名" => "コントローラ名#アクション名", get,post両方の場合はmatchを使う, asでアプリケーションから値が取れる get "about" …

Railsの<%= yield %>というモノ

Controller(アクション)からから呼び出されたテンプレートが作成するHTMLコンテンツが埋め込まれる。 現実的には app/views/layouts/ で使用されてアクション固有のビューを入れる。 layoutの指定仕方が有るからそれもメモしとかないと。。。

Bundlerについて

キーワードだけ聞いてたのでメモしとく。 rubyはgemっていうperlでいうcpanみたいなパッケージ管理がついていて、 このバージョンとかインストールとかを揃えるツール。 ラッパーみたいなもんかね。 Gemfile ってのが有って ここに source 'https://rubygems…

Rubyのハッシュからキーと値を取り出すパターン

ハッシュ 配列として イテレータとして キーを取り出す keys each_key | キー| 値を取り出す values each_value| 値| [キー, 値]のペアを取り出す to_a each{| キー, 値|} each{| 配列|} 実際のコードでは eachでループする事が多そう。

Rubyのコーディング規約,破壊的,非破壊的メソット

完全にメモ 破壊的なメソッドと非破壊的なメソッドの両方を提供する場合、破壊的なメソッドには`!'を付ける。

Ruby1.9で文字コードを指定する(日本語扱う)

# -*- coding: utf-8 -*- 後はコードを書くだけ。

Rubyで数え上げる

ループのさせかた色々あるみたいで。 # iをインクリメントしながら10を超えるまで繰り返す ary = [] 10.times do |i| ary << i end p ary # iをレシーバーの値からインクリメントしながら10になるまで繰り返す # iがuptoの引数を超えるまで繰り返す ary = []…

RubyのArrayクラスのpushと同じメソット

ary = [] ary << "hoge" こう書ける。 書き方が多いのは慣れれば良いんでしょうが。。。

Rubyのcatchとthrow

def est_throw # catchで指定したものと同じシンボルが指定されてるから呼び出し元のブロック終了 throw :test end puts "test start # ブロックの同じシンボルを引数にしてthrowを呼ぶとブロックを終了 catch(:test) do puts "before test_throw()" # メソ…

Rubyのクラス継承の書き方

MyError = Class.new(StandardError) こんな風に書いておくと class MyError < StandardError end と同じ意味になる。 何も変えない時に使えるみたいだけど。 何も変えないのにどう使うんだろ。。。 読み方として書いておく。

Rubyの標準出力(print,puts)とカンマ,の関係

ただの文法の話 print "Hello", "Ruby\n" こんな風に書いて ruby hello.rb とすれば HelloRuby と出力される。 putsでやれば多少便利かも。 puts "Hello", "Ruby\n" Hello Ruby こうなる。 便利なんだかどうなんだかよく解らない。

Rubyのモジュールについて

クラスとの棲み分けがまだわかってないが。 module HelloModule Version = "1.0" # 定数定義 def hello(name) # メソット定義 print "Hello,",name, "\n" end module_function :hello # helloをモジュール関数として公開する end p HelloModule::Version Hel…

rubyのインスタンスメソットをまとめてアクセス制限する

1つ1つであれば class Hoge def pub puts "this is public" end public :pub # pubメソットをpublicに設定 def priv puts "this is private" end private :priv # privメソットをprivateにする end まとめて指定したい場合 class Hoge public # 引数を指定…

rubyのクラスメソット

クラスに関連する操作をするためにクラスメソットを定義する。 んで。このクラスメソットの定義方法は def クラス名.メソット end になる class HelloWorld def HelloWorld.hello() print 'hello' end end こんな感じ。 クラス定義の中のselfはその暮らすオ…

【Ruby】コンストラクタにブロックを渡す意味が分からん

mailモジュールを使ってメールを送るようにしたいんだが。 サンプル読んでるとこうなってる。 @mail = Mail.new do to to from from subject subject body body end ブロックを渡すのか。。。 このbodyが@bodyみたいにインスタンス変数の場合ってどうすれば…