Today: Yesterday: Total: Online:
カテゴリー
その他
  • RSS1.0
  • RSS2.0
  • atom0.3
  • valid XHTML1.0
  • valid CSS2
  • Credit
RSSリーダーで購読する | この日記のはてなブックマーク数 | プロフィール
コメントが一番多い記事(233コメント):人の心理の裏をかくホームページ集客術:リピータになってもらうためには
ツイートが一番多い記事(94ツイート):ちょっと待て!twitterやfacebookに子供の写真を掲載する親達への警告
いいねが一番多い記事(574いいね):facebookスパムに要注意。なりすましの見分け方とアカウント乗っ取りの手口(2013年度版)

[ カテゴリー » Ruby ]

カテゴリー » Ruby December 17, 2009

require 'sqlite3'でエラー ID:1261018589


require 'sqlite3'でエラー
`require': no such file to load -- sqlite3 (LoadError)
の場合、

require 'rubygems'
require 'sqlite3'
とrubygemsも一緒にrequireしてやる

http://d.hatena.ne.jp/ke_takahashi/20090805/p2

— posted by midilin @ 11:56AM

カテゴリー » Ruby December 15, 2009

rubyのエラーをブラウザに出力する方法 ID:1260867207


#!/usr/bin/ruby

begin

   #
   # 処理を記述
   #

rescue Exception => e #例外を取得

print "Content-Type: text/html\n\n"
print "<html><head></head><body>"
print "Error:"
print "<br>"
print e
print "<br>"
print "backtrace:"
print "<br>"
print e.backtrace #Exceptionオブジェクトのbacktraceメソッドでバックトレースを表示
print "</body></html>"

end

http://exposed.egoism.jp/wordpress/?p=307

— posted by midilin @ 05:53PM

カテゴリー » Ruby December 15, 2009

Rubyで外部モジュールを読み込む方法 ID:1260857150


requireを使う。


http://blog.livedoor.jp/sasata299/archives/51268600.html


相対パスをrequireするとき親ディレクトリが指定できない
require "../parent.rb"

http://d.hatena.ne.jp/gamako/20080526/1211837313

requireやloadのためのパス情報には、ファイル自信のパスの情報はない。
なので、カレントディレクトリからではなくて、ファイル自信のパスからの相対パスでrequireやloadをしたい場合は
絶対パスに変換しながらロードするか、
require File.dirname(__FILE__) + "/child/child.rb"



$LOAD_PATHに相対パスを追加してからロードするか、
$LOAD_PATH << File.dirname(__FILE__) + "/child"
require "child.rb"


$LOAD_PATHに自信のパスを追加してから相対パスでロードするか、
$LOAD_PATH << File.dirname(__FILE__)
require "child/child.rb"


また、requireのほかにloadがある。
http://www.sakalab.org/3zemi06/no6.html
requireとloadの違いは

requireの場合、


1.Rubyの実行開始から実行終了までの間に同じファイルは1度しか読み込まない。
つまり、同じファイルを指定したrequireを何度も実行すると、
最初に実行した時のみ読み込まれ、2度目からは何もしない。


2.現在のディレクトリ以外に、Rubyであらかじめ準備されているクラス定義 などが
あるディレクトリも含めてファイルを自動的に探す。
これはシステムにインストール済みのクラスライブラリを使う際のことを想定している。
また、そのためディレクトリ名は一般的に略される。


3.完全なファイル名でなくても、「.rb」などが略されていても 自動的に補完してファイルを探す。
これはソースプログラム以外の拡張 ライブラリを用いることが想定されている。

— posted by midilin @ 03:05PM

カテゴリー » Ruby November 09, 2009

Rubyで配列 ID:1257741691


1.[キー, 値, ...] の配列からハッシュへ

ary = [1,"a", 2,"b", 3,"c"]
p Hash[*ary]

# => {1=>"a", 2=>"b", 3=>"c"}
2.キーと値のペアの配列からハッシュへ

alist = [[1,"a"], [2,"b"], [3,"c"]]
p Hash[*alist.flatten]

#=> {1=>"a", 2=>"b", 3=>"c"}
3.キーと値の配列のペアからハッシュへ(version 1.7 以降)

keys = [1, 2, 3]
vals = ["a", "b", "c"]
alist = keys.zip(vals) # あるいは alist = [keys,vals].transpose
p Hash[*alist.flatten]

#=> {1=>"a", 2=>"b", 3=>"c"}
4.キーや値が配列だと (2) や (3) の方法は使えないので地道に代入するしかない

h = Hash.new
alist = [[1,["a"]], [2,["b"]], [3,["c"]]]
alist.each {|k,v|
h[k] = v
}
p h

#=> {1=>["a"], 2=>["b"], 3=>["c"]}

http://www.ruby-lang.org/ja/man/html/Hash.html

— posted by midilin @ 01:41PM

カテゴリー » Ruby November 06, 2009

Ruby csv 操作 書き込み 読み込み ID:1257491724


●読み込み
CSV.open("/temp/test.csv", 'r') do |row|
  puts row.join("<>")
end

●書き込み
CSV.open("/temp/test.csv", 'w') do |writer|
  writer << ["ruby", "perl", "python"]
  writer << ["java", "C", "C++"]
end


CSV.open(path, mode[, fs = nil[, rs = nil]]){ ... }

mode
'r', 'w', 'rb', 'wb' から指定可能。

- 'r' 読み込み
- 'w' 書き込み
- 'b' バイナリモード

fs
フィールドの区切り文字
デフォルトは ','

rs
行区切り文字。nil(デフォルト)で CrLf / Lf。
Cr で区切りたい場合は ?\r を渡す。



●既存ファイルに追記したい場合
追記モードで開いたファイルオブジェクトを、CVS::Writer.generate に渡す。
f = File.open(new_csv, 'a')
CSV::Writer.generate(f) do |writer|
  rows.each {|row| writer << row }
end


http://www.ruby-lang.org/ja/man/html/CSV.html
http://d.hatena.ne.jp/gom68/20090213/1234523232

— posted by midilin @ 04:15PM

カテゴリー » Ruby November 05, 2009

Ruby SQLite ID:1257400028


●データベースファイルを開く
require "sqlite3"
db = SQLite3::Database.new("data.db")


●データベースを閉じる
db.close


●select
db.execute('select * from テーブル名') do |row|
#rowは結果の配列
puts row.join("\t")
end


●insert、update、delete
sql = "insert into テーブル名 values (?, ?, ?)"
db.execute(sql)



●select insertを続けて実行
require 'sqlite3'


old_db = SQLite3::Database.new('old.db')
new_db = SQLite3::Database.new('new.db')


old_db.execute('select id, name from test;') do |row|
row << 'unknown'
new_db.execute('insert into (id, name, age) values (?, ?, ?);', *row)
end


old_db.close
new_db.close



●トランザクション
トランザクション
ブロックを与えた場合、終了した時点でコミットする。

db.transaction do
sql = "insert into 社員 values (?, ?, ?)"
db.execute(sql, '橋本', 26, '広報部')
db.execute(sql, '小泉', 35, '営業部')
db.execute(sql, '亀井', 40, '営業部')
end


http://www.gesource.jp/programming/ruby/database/sqlite.html
http://www.61503891.com/notebook/index.php?Ruby%2FTips%2FSQLite3
http://d.hatena.ne.jp/shunsuk/20071207/1197019297

— posted by midilin @ 02:47PM

カテゴリー » Ruby » RDE November 05, 2009

Ruby RDE 日本語化 ID:1257382054


RDE起動→tool→options→Config File→TranslationFileをJapanese○○○.xmlに変更してRDE再起動


最初は空白なので、RDEインストールディレクトリを探して
TranslationFileの中を見る。


http://ameblo.jp/colted/entry-10099340169.html
http://wapbox.info/archives/ruby/25.html

— posted by midilin @ 09:47AM