5ちゃんねる ★スマホ版★ ■掲示板に戻る■ 全部 1- 最新50  

■ このスレッドは過去ログ倉庫に格納されています

Ruby 初心者スレッド Part 32

1 :デフォルトの名無しさん:2009/10/24(土) 06:18:12
プログラミング言語Rubyについての、初心者向けスレです。質問・要望・雑談などどうぞ。

★注意★ Ruby 1.9.1 は初心者にはまだ時期早尚です。初心者には Ruby 1.8.7 を強くお勧めします。
   (理由:現時点では多くの有名ライブラリやアプリが 1.9.1 に完全対応していないためです。)
 1.8.7 でも 1.9 系に導入された新機能のいくつかが利用可能なため、1.8.7 を習得すれば将来スムーズに 1.9 系に移行できるでしょう。

関連スレやURLは>>2-5あたりを見てください。Ruby on Rails の質問は Webプログラミング板の Rails スレへ。

■質問する人へ
質問する前に次の3つをすること。ここで回答を待つよりそのほうが早い。
 ・モジュール名やエラーメッセージでググる
 ・マニュアルで引っかかったクラスの記述を探す http://www.ruby-lang.org/ja/man/
 ・FAQを一応読む http://www.ruby-lang.org/ja/man/?cmd=view;name=Ruby+FAQ
質問には以下を書くこと。へたくそな質問は再提出を要求される。
 ・詳しい内容(「動きません」「うまくできません」では回答しようがない)
 ・エラーメッセージ(自力で訳さずなるべくそのままで)
 ・実行環境(OS名、Rubyのバージョン(ruby -v でわかる))
 ・最終的にやりたいこと(もっとよい方法がある場合が多いので)
回答してくれた人には「ありがとう」のひとことをいってあげて。

■回答する人へ
相手は初心者、根気よく育てるつもりで。質問がへたくそなのも大目にみてあげる。
それができないならこないこと(だって初心者スレだもん)。
 ・既出な質問やFAQは「XXXを読め」でいいので、叩かない&怖がらせない。
 ・わけわかな質問にもエスパー発揮で。できれば質問の仕方を教えるぐらいで。
 ・自信がない回答ならその旨表明すること。誤った回答は初心者じゃ見抜けない。

2 :デフォルトの名無しさん:2009/10/24(土) 06:19:04
【よくあるしつもん】
Q:
いちからRubyを始める初心者向けのRuby入門書は何がありますか?

A:
プログラム作成自体の初心者なら
 ・「たのしいRuby 第2版 Rubyではじめる気軽なプログラミング」
  http://www.amazon.co.jp/dp/4797336617/
文法は理解済み(orリファレンスで乗り切る既言語習得者)の場合のRuby様式を知る必携2冊目
 ・「初めてのRuby」
  http://www.amazon.co.jp/dp/4873113679/

以下は外れが少ないとされている本です。必ず立ち読みした上で自分の目的とレベルに応じて購入してください。
 ・「Rubyレシピブック 第2版 268の技」(初心者向け)
  http://www.amazon.co.jp/dp/4797340045/
 ・「プログラミングRuby 第2版 言語編」(初心者向け)
  http://www.amazon.co.jp/dp/4274066428/
 ・「Ruby Way 第2版」(脱初心者向け)
  http://www.amazon.co.jp/dp/4798115339/
 ・ 「Rubyクックブック ―エキスパートのための応用レシピ集」(脱初心者向け)
  http://www.amazon.co.jp/dp/4873113245/

以下の本は言語作者が書いた最新本ですがとりあえず初学者向けではありません。
 ・「プログラミング言語 Ruby」(言語として深く知りたい人向け)
  http://www.amazon.co.jp/dp/4873113946/

3 :デフォルトの名無しさん:2009/10/24(土) 06:20:08
Ruby 公式・非公式便利サイト2009

・Ruby Home Page 【公式、お役立ち度が微妙】
 http://www.ruby-lang.org/ja/
・Rubyリファレンスマニュアル 【検索機能休止中、Googleなどの併用を】
 http://www.ruby-lang.org/ja/man/
 http://www.ruby-doc.org/ 【詳しい英語版】
・HTMLヘルプ版リファレンスマニュアル配布さん 【Windowsで便利、検索も無論可能】
 http://elbereth-hp.hp.infoseek.co.jp/ruby.html
・Programming Ruby - The Pragmatic Programmer's Guide 【好評書籍の初版がネットで、ただし英語】
 http://www.ruby-doc.org/docs/ProgrammingRuby/
・Rubyist Magazine - るびま 【ライブラリ紹介などの読み物、過去のコードレビューは一読の価値あり】
 http://jp.rubyist.net/magazine/

・逆引きRuby 【やりたいことから探すWiki、最近元気ないので編集者募集】
 http://www.namaraii.com/rubytips/
・はてなキーワード > Ruby 【うっかりどっさりまとまったリンク集、説明なし】
 http://d.hatena.ne.jp/keyword/Ruby

・RubyForge 【○○をやりたい管理されたライブラリを探すならここ、英語】
 http://www.rubyforge.org/
・GitHub 【○○をやりたいコードをとにかく探すならここ、英語】
 http://github.com/

・日本Rubyの会 【最近はオフライン勉強会の寄り合い場と化しているので近くで勉強会があれば】
 http://jp.rubyist.net/

4 :デフォルトの名無しさん:2009/10/24(土) 06:21:53
関連スレ
・Rubyについて Part 37
 http://pc12.2ch.net/test/read.cgi/tech/1251029267/

アンチスレ
・Rubyについて(アンチ専用) Part004
 http://pc12.2ch.net/test/read.cgi/tech/1249737531/

Railsスレ
・【Ruby】Ruby on Rails Part8
 http://pc11.2ch.net/test/read.cgi/php/1252842574/

Windows用スレ
・【ActiveScript】RubyをWindowsで使うスレ【GUI】
 http://pc11.2ch.net/test/read.cgi/tech/1155031689/

Ruby 1.9 系列スレ
・魁け! Ruby 1.9.X
 http://pc11.2ch.net/test/read.cgi/tech/1201603546/


5 :デフォルトの名無しさん:2009/10/24(土) 06:22:47
前スレ

Ruby 初心者スレッド Part 31
http://pc12.2ch.net/test/read.cgi/tech/1253176267/

Ruby 初心者スレッド Part 30
http://pc12.2ch.net/test/read.cgi/tech/1249687283/


6 :デフォルトの名無しさん:2009/10/24(土) 07:04:48
バージョンに関するよくある質問

・Ruby 1.8.5
 レンタルサーバ等にいまだに残ってる非安定な古いバージョン
 1.8.6 にすらなってない理由はたぶん管理の手抜きなので怒ってよい

・Ruby 1.8.6
 過去の長期政権と数の暴力で一大勢力圏を維持中の旧安定版
 公開スクリプトはこれでも動作するべきではあるんだがそろそろ 1.8.7 に譲ってくれ

・Ruby 1.8.7
 1.9 シリーズの機能をいくつか足したハイブリッドなバージョン、初学者にこそお勧め
 1.9 系機能は 1.8.6 では動かないが「えーマジ1.8.6!? 1.8.6が許されるのは小(AA略」と煽ってよい

・Ruby 1.9.0
 不安定にして先鋭機能が超満載の開発版バージョンだったもの
 1.9.x は本来全てが開発版の呼称だったのだが、事情が変わって(ここ笑うところ)1.9.1 は安定板に

・Ruby 1.9.1
 満を持して登場の 1.9 系列安定板(本体は 1.8.6 程度には使えるということになっている)
 本体と添付ライブラリの動作は問題がないのだが外部第三者ライブラリが全く追いついていない
 初心者を脱した人が外部ライブラリの開発コミュニティに参加してくれたりすることを期待中

7 :デフォルトの名無しさん:2009/10/24(土) 07:07:22
おまけ

・Rubygem 0.x
 極悪動作をすることで有名なRuby外部ライブラリ利用サポートプログラム群のバージョン
 このバージョンしかパッケージが存在しないUNIX系ディストリビューションがあって結構問題に
 しかも「rubygem本体の自己更新機能は殺してるのでパッケージから入れてね」とかほざきやがる
 パッケージがバージョン 1 より前のものしかない場合はソースからインストールするとよい
 Rubygem は 1.0 も 1.1 も 1.2 も肝心なとこにバグ持ちなので極力 1.3 などの最新を使うこと

8 :デフォルトの名無しさん:2009/10/24(土) 12:42:59
へえ〜。理解した。おつ!

9 :デフォルトの名無しさん:2009/10/24(土) 13:03:49
WindowsでRubyを始める人のために、前スレより転載


17 名前: デフォルトの名無しさん Mail: sage 投稿日: 2009/09/17(木) 18:28:30
>>14
最初はRubyistMagazineのページを見るといいかも。
ttp://jp.rubyist.net/magazine/?FirstStepRuby
以下引用
> Windows Me, 2000, XP, Vista (95, 98, 98SE)
> -------------------------------------
> 以下のサイトから ActiveScriptRuby の最新版をダウンロードしてインストールしてください。一番上からダウンロード出来るものをインストールして下さい。
> Windows 98 以前の Windows をお使いのかたは、あらかじめ Windows Installer 1.1 以上を入手しておく必要があります。
> ttp://www.artonx.org/data/asr/
> ActiveScript というものが何であるかを気にする必要はありません。


36 名前: デフォルトの名無しさん Mail: sage 投稿日: 2009/09/17(木) 19:07:18
RubyistMagazineのページに、チュートリアルが紹介してあんのな。

ttp://jp.rubyist.net/magazine/?FirstStepRuby
> Ruby ではじめるプログラミング
>
> とりあえず何をしたらいいのかわからない、という人は本誌 Rubyist Magazine の初心者向け連載があります。
> ttp://jp.rubyist.net/magazine/?0002-FirstProgramming
> ただし、この連載はプログラミング自体の初心者を対象にしているため、 すでに他言語でのプログラミング経験がある方には少々簡単すぎると思います。

10 :デフォルトの名無しさん:2009/10/24(土) 13:05:21
あとこれも前スレから。


105 名前: デフォルトの名無しさん Mail: sage 投稿日: 2009/09/18(金) 16:25:12
初心者にカリカリしている人が多いようなので、再掲しました。

>>1
>■回答する人へ
>相手は初心者、根気よく育てるつもりで。質問がへたくそなのも大目にみてあげる。
>それができないならこないこと(だって初心者スレだもん)。
> ・既出な質問やFAQは「XXXを読め」でいいので、叩かない&怖がらせない。
> ・わけわかな質問にもエスパー発揮で。できれば質問の仕方を教えるぐらいで。
> ・自信がない回答ならその旨表明すること。誤った回答は初心者じゃ見抜けない。

ここは初心者がバカな質問をすることを大目に見てあげられるマゾヒストのためのスレです。
初心者にカリカリするような人はこないでね。

11 :デフォルトの名無しさん:2009/10/24(土) 17:44:09
http://jp.rubyist.net

とりあえず落ちていることを報告。

12 :デフォルトの名無しさん:2009/10/24(土) 19:48:01
質問があります。

cucumberという受け入れテストツールを動かしてみているのですが、
コマンドプロンプト上だとwin32consoleをインストールすることで色づけがされるのですが、
UTF-8が化けてしまいます。
そこで、cygwinのターミナルck上で動かそうとしたのですが、今度は色づけがされません。
どういったことを疑うべきでしょうか?

cucumber 0.4.2
ruby 1.8.7
Windows Vista SP2

13 :デフォルトの名無しさん:2009/10/24(土) 19:54:21
>>12
コマンドプロンプトというか CMD.EXE 上で UTF-8 文字が表示できないのは当たり前

cygwin のターミナルで着色されないのは環境変数 $TERM あたりが実際のターミナルと合ってないのだろう

14 :デフォルトの名無しさん:2009/10/24(土) 20:55:11
cucumberがTERM=cygwinに対応してないんだろう

15 :デフォルトの名無しさん:2009/10/24(土) 21:26:23
cygwin だからといって TERM が cygwin だとは限らない

16 :デフォルトの名無しさん:2009/10/24(土) 22:19:07
ckはcygwinじゃなかったっけ?

17 :デフォルトの名無しさん:2009/10/24(土) 23:17:48
いつになったら CMD.EXE 上で UTF-8 表示出来るようになるのかしら

18 :デフォルトの名無しさん:2009/10/24(土) 23:20:14
だよな
それが解決したら文字コードまわりの問題の殆どが解決する稀瓦斯

19 :デフォルトの名無しさん:2009/10/24(土) 23:20:55
ブロックパラメータの引数の数を調べる方法はありますか。
やりたいことは、ブロックの引数の数によって処理を変えることです。

def f()
n = ブロックの引数の数
if n <= 0
...
else
...
end
yield
end


20 :デフォルトの名無しさん:2009/10/24(土) 23:31:08
なんか色々ツッコミ入れたいが、メソッドの不定数引数は *arg のように受け取る

def mes(*arg, &block)
if arg.size.zero? then
puts "no arg"
else
arg.each_with_index do |e, i|
puts "#{i}: #{e}"
end
end
yield if block
end


irb> mes('a', 'b')
0: a
1: b
irb> mes
no arg


21 :デフォルトの名無しさん:2009/10/25(日) 00:14:09
>>19
def f
prc = Proc.new
n = prc.arity
p n
end
f{|a,b,c| } #=> 3

詳しくはマニュアルでProcを調べろ

22 :デフォルトの名無しさん:2009/10/25(日) 00:39:05
mapやeachが現在何回目のループなのか知る手段ないですか?

23 :デフォルトの名無しさん:2009/10/25(日) 00:41:42
>22
with_index

24 :デフォルトの名無しさん:2009/10/25(日) 00:52:23
>>23
ぐぐってみたんですが使い方がわからないです
こうではないですよね・・

[1,2].map.with_index do |n,i|
puts i
end


25 :デフォルトの名無しさん:2009/10/25(日) 00:56:25
ubuntu に ruby をインストールしてみました
端末から ruby と入力すると exitで$(bash)に戻れません

どうすれば$(bash)に戻れるのでしょうか?

Googleで調べてみたのですが
あまりに初歩すぎる疑問のようで
回答を見つけることが出来ませんでした

26 :デフォルトの名無しさん:2009/10/25(日) 01:11:03
mapにwith_index っていうのは、標準にはなくて
自分で定義しろということでしょうか?

27 :デフォルトの名無しさん:2009/10/25(日) 01:11:16
>>25
Control + D

恐らく、やりたいことに最も近いのは ruby でなく irb を使うこと
ruby はエディタで既に書いたコードを実行するために使うと覚えとこう

28 :デフォルトの名無しさん:2009/10/25(日) 01:30:11
>>17
chcp 65001
できるだけって感じだけど

29 :デフォルトの名無しさん:2009/10/25(日) 01:32:30
>>27
ほんとだ、$(bash)に戻ってこれた

けど、rubyの人達って Emacs Emacsって書いてありますけど
やっぱりEmacsなんでしょうか?

30 :デフォルトの名無しさん:2009/10/25(日) 02:05:34
>>26
.with_index の使い方は>>24であってる。(0始まりに注意)
が、バージョンによってはそもそも存在しなかったり、require が必要
だったりするので、バージョンを明示せよ。


31 :デフォルトの名無しさん:2009/10/25(日) 02:20:37
>>29
本気でプログラマ目指すとかならemacsとかviも触っておくに越したことはないけど
普通に勉強するならgedit辺りで良いと思うよ
gedit ファイル名 &
でコード書いて、セーブしたらターミナルに戻って
ruby ファイル名
で実行すれば良いんじゃないかな
ファイルに書き起こすまでもないようなコードはirbで直接書いて実行するのも良い

32 :デフォルトの名無しさん:2009/10/25(日) 02:27:13
1.9系はeach.with_indexとmap.with_index
1.8.7はeach_with_indexもしくはto_enum.with_index.eachとto_enum.with_index.map
1.8.6だとeach_with_indexと・・・mapはわからん、enumerator.rb呼んでもダメそうだし

33 :デフォルトの名無しさん:2009/10/25(日) 02:31:36
そういえば1.8.7のブロックなしmapは扱いが特殊だったな。


34 :デフォルトの名無しさん:2009/10/25(日) 02:32:27
Æ
&aElig;

35 :デフォルトの名無しさん:2009/10/25(日) 02:36:23
1.8.6でインデックス付きmapやるなら、インデックスだけ取ってきて
中身にはイテレータ使わずにループ書いたほうが楽そうだな

36 :デフォルトの名無しさん:2009/10/25(日) 02:55:50
>>32
ありがとうございます
ヴァージョンは1.8.6です
each_with_indexの動作確認できました

37 :デフォルトの名無しさん:2009/10/25(日) 03:16:32
RubyってPHPやPerlほどwebで使われてないと思うけどなんで。

38 :デフォルトの名無しさん:2009/10/25(日) 03:38:03
Perlほど昔から使われてたわけじゃないし、
PHPみたいにWeb専用言語でもないからじゃないか?
使えるアプリもそれほど多くないと思うし

39 :デフォルトの名無しさん:2009/10/25(日) 04:18:53
>>37
PHPやPerlで用が済むから

40 :デフォルトの名無しさん:2009/10/25(日) 04:38:57
ていうか Ruby のバージョンによらず何事もなければ each_with_index が出るのが普通
これで間に合わない場合にのみほかの手段を講じる

41 :デフォルトの名無しさん:2009/10/25(日) 07:38:33
>>32
1.8.6だと
require 'enumerator'
p %w(a b).enum_with_index.map{| v,i | [v,i] }
# => [["a", 0], ["b", 1]]

42 :デフォルトの名無しさん:2009/10/25(日) 07:44:14
これってバグになりますか?

test = []
test[0] = "aa"
test[1] = "bb"
test[99] = "cc"


t = Array.new(3)
t[99]= 88

43 :デフォルトの名無しさん:2009/10/25(日) 08:06:38
test = []
test[0] = "aa"
test[1] = "bb"
test[3] = "cc"
t = Array.new(3)
t[6]= 6
p test
p t

#=>
["aa", "bb", nil, "cc"] [nil, nil, nil, nil, nil, nil, 6]



44 :デフォルトの名無しさん:2009/10/25(日) 08:12:43
動くのは知ってるんですが
仕様上、この構文が許されてるのかどうかを知りたいんです
特に、Array.newなんて関数が用意されてるのに
t = Array.new(3)
t[6]= 6
こんなことできるんじゃArray.newの立場はどこへ?

45 :デフォルトの名無しさん:2009/10/25(日) 08:13:18
#!/usr/bin/ruby -Ku
print "Content-type: text/html\n\n"

begin

a=0
if a==0
#end

puts "OK"

rescue Exception => e
bt = e.backtrace
puts "#{bt.shift}: #{e.message} (#{e.class})<br />"
puts bt.map{|s| ">>from #{s}"}.join("<br />")
end

ブラウザで「Internal Server Error」が表示されます。
エラーを捕捉できないのでしょうか?

46 :デフォルトの名無しさん:2009/10/25(日) 08:26:23
>>45
できるはずだけど、もし自分でできないならCGIExceptionをインストールしてみたら?
ttp://cgi-exception.rubyforge.org/

47 :デフォルトの名無しさん:2009/10/25(日) 09:35:13
>>44
Array.new は関数ではない
揚げ足取りではなく本当に学習的な意味で、それを関数と捉えてはいけない

Array.new は Array クラスの インスタンス(オブジェクト)を生成する
Array オブジェクトの [] メソッドは内部領域にデータを追加する
そんだけ

48 :デフォルトの名無しさん:2009/10/25(日) 09:38:59
インストールしてみましたが、シンタックスエラー?は表示されませんでした。
>>45もシンタックスエラー?以外は捕捉できます。

49 :デフォルトの名無しさん:2009/10/25(日) 09:55:24
(eval内は別として)文法エラーは、「実行前」に検出されるもの。
検出する処理さえ実行される前だから、当然捕捉できない。


50 :デフォルトの名無しさん:2009/10/25(日) 10:22:42
>>44
ある程度大きな配列で、サイズが事前にわかっているなら
動的にちまちまと拡張するよりは最初にサイズを予約したほうが効率的

なんだけど普通は気にしなくていい

51 :デフォルトの名無しさん:2009/10/25(日) 10:32:17
ある程度大きな配列ったって1000や1万では話にならんけどな
なおかつインデックスで要素追加をすること前提

52 :デフォルトの名無しさん:2009/10/25(日) 12:41:05
>>47
Array オブジェクトの []= メソッドはオブジェクトの内部領域にデータを追加する

だと思う

53 :デフォルトの名無しさん:2009/10/25(日) 17:57:56
>>47
newは演算子でしたね
でもスクリプトの場合って
コンパイルするわけじゃないし演算子も関数も違いないような気がしますけど
構文的はOKなんですね
(ちょっと かいたスクリプトが途中で落ちてしまうのでバグの箇所を探しています・・)

>>50
なるほど、やっぱりその程度の使い方なんですね

54 :デフォルトの名無しさん:2009/10/25(日) 18:26:28
>>53
Rubyだとnewは演算子でもなんでもなく、Classクラスから継承したインスタンスメソッド
http://doc.okkez.net/187/view/method/Class/i/new

55 :デフォルトの名無しさん:2009/10/25(日) 18:37:40
関数だと考えるとわからなくなるというのは「クラス→インスタンス」モデルを考えれということなんだと思う
呼び名が用語的に間違っているから正しい呼び方をしろという意味ではない、たぶん

Array.new は Array クラスのインスタンス(オブジェクト)を返す
Array.new(引数つき) は Array オブジェクトを作成し、引数に応じた状態に変更してから返す
Arrayオブジェクト[インデックス]=値 は Arrayオブジェクトの []= メソッドに引数 (インデックス, 値) を渡し、
メソッドに規定された状態変更等を行ってから Array オブジェクトを返す
地の文の [] は Array.new を簡単に書けるようにわざわざ組み込まれたもので、Array.new と同じものを返す

56 :デフォルトの名無しさん:2009/10/25(日) 18:41:06
インスタンスの状態なり情報を内部領域って言うのはなんか怖いな

57 :デフォルトの名無しさん:2009/10/25(日) 18:42:44
クラスもまた、オブジェクト(Classクラスのインスタンス)で表される、ということが
JavaとかC++からの連想だとわからないよね。

58 :デフォルトの名無しさん:2009/10/25(日) 18:58:58
>>56
C で書かれてる Array や Hash の場合は格納されたデータ本体を外部から触れないからなー
どこに格納されてると説明する?

59 :デフォルトの名無しさん:2009/10/25(日) 19:07:46
>>58
まさにそういうCレベルで意識させることに「内部領域」という言葉の怖さを見てとったんだけど
それが目的なら仕方ないとしか

60 :デフォルトの名無しさん:2009/10/25(日) 19:09:24
>>48
>インストールしてみましたが、シンタックスエラー?は表示されませんでした。

require 'cgi'
require 'cgi-exception'
eval <<'END_OF_SCRIPT'
 # ...
 # ここにコードを書く
 # ...
END_OF_SCRIPT

というふうにすれば、シンタックスエラーも表示されたりしないかな。

61 :デフォルトの名無しさん:2009/10/25(日) 19:21:13
>>59
URI は、インスタンス変数に URI データを格納してるじゃん
Net::HTTP も、インスタンス変数にサーバからのデータを格納してるよな
でも Array とか String とか Hash とか Regexp とかは、インスタンス変数があるわけじゃないよな

62 :デフォルトの名無しさん:2009/10/25(日) 19:24:24
>>53
Array.new自体の存在意義を問うてる?
並のユーザーから見たこいつの心髄は、第二引数によるデフォルト値の設定だと思う

> ary = Array.new(3, "hoge")
=> ["hoge", "hoge", "hoge"]
> ary[5]
=> nil
> ary[5] = "fuga"
=> "fuga"
> ary
=> ["hoge", "hoge", "hoge", nil, nil, "fuga"]

まあこれといいHash.newといい、迂闊に触ると火傷するけどね

> ary[0][1] = "a" # ary[0]の二文字目を上書き
> ary
=> ["hage", "hage", "hage", nil, nil, "fuga"]

>>60
スクリプト本体を別ファイルにしてloadなりrequireすれば
問題のスクリプトに触れる前にbeginブロックが実行されるから捕捉できる

begin
load "example.rb"
rescue Exception => e
bt = e.backtrace
puts "#{bt.shift}: #{e.message} (#{e.class})<br />"
puts bt.map{|s| ">>from #{s}"}.join("<br />")
end


63 :デフォルトの名無しさん:2009/10/25(日) 19:25:11
あ、CGIだっけ?content-type吐き出すの忘れてた

64 :デフォルトの名無しさん:2009/10/25(日) 19:25:52
>>61
Rubyのインスタンス変数は原則プライベートだから
インスタンスがどういう情報の持ち方をしていようが何の興味もないよ

65 :デフォルトの名無しさん:2009/10/25(日) 19:51:01
>>45
もしApacheを使ってるなら
Apacheの設定次第で、エラーの内容をログファイルに出すこともできる
どうしても表示されないなら試してみるのもいいかも

66 :45:2009/10/25(日) 21:37:48
スクリプト本体を別ファイルにしてloadすれば、
シンタックスエラーが表示されました。

今回はこの方法を使わせていただきたいと思います。
ありがとうございました。

67 :デフォルトの名無しさん:2009/10/25(日) 21:40:23
一回 ruby -wc でシンタックスチェックしてみろよ

68 :デフォルトの名無しさん:2009/10/25(日) 21:43:03
というか手元に Ruby 実行環境がないのだろ

69 :デフォルトの名無しさん:2009/10/25(日) 22:56:40
twitterのbotを勉強目的で作ろうとしてるんだが、こんなエラーが発生して対応できない。
誰か解決策を教えてください。twitterのライブラリは入れてあるつもりなのですが。。

エラーメッセージは下です。
# ruby ./aaa.rb./aaa.rb:2:in `require': no such file to load -- twitter (LoadError)
from ./aaa.rb:2

環境はこうなっています。
# gem list
*** LOCAL GEMS ***
actionmailer (2.3.4)
actionpack (2.3.4)
activerecord (2.3.4)
activeresource (2.3.4)
activesupport (2.3.4)
crack (0.1.4)
hoe (2.3.3)
httparty (0.4.3)
json_pure (1.1.9)
mash (0.0.3)
oauth (0.3.6)
rack (1.0.1)
rails (2.3.4)
rake (0.8.7)
ruby-hmac (0.3.2)
rubyforge (2.0.3)
twitter (0.6.15)

70 :デフォルトの名無しさん:2009/10/25(日) 22:59:13
gem なら require 'rubygems'


71 :69:2009/10/25(日) 22:59:32
実行したいソースは↓です。

#require 'ruby gems'
require 'twitter'
require 'time'


USERNAME = 'bot'
PASSWORD = '!@#QWE'

client = Twitter::Base.new( Twitter::HTTPAuth.new( USERNAME, PASSWORD ))
client.update( Time.now)

72 :69:2009/10/25(日) 23:02:09
参考に観てたblogのソースだと空白が仕込まれてたみたいです。。
>>70さん ありがとございました。

73 :デフォルトの名無しさん:2009/10/25(日) 23:14:53
require 'rubygems' は書くべきではない、という指摘もあったな。
1.9なら不要だし、1.8では、ない場合はどうせエラーにするだけだし、
あるならRUBYOPTにセットしとけ、みたいな感じ。


74 :デフォルトの名無しさん:2009/10/25(日) 23:24:43
>>73
君は使いもしないライブラリを読み込むべきだと考えるのかね

75 :デフォルトの名無しさん:2009/10/25(日) 23:30:38
RUBYOPT は自分のために自分の環境で設定するもの
他人に強制したり期待したりするものではない

76 :デフォルトの名無しさん:2009/10/25(日) 23:43:48
RUBYOPT構想は結局失敗だったな

77 :デフォルトの名無しさん:2009/10/25(日) 23:47:28
そもそも環境変数自体が失敗

78 :デフォルトの名無しさん:2009/10/25(日) 23:57:39
使いもしないライブラリとやらが組み込まれてやんのw

79 :デフォルトの名無しさん:2009/10/25(日) 23:58:47
うるせぇエビフライぶつけんぞ

80 :デフォルトの名無しさん:2009/10/26(月) 00:03:54
一度でも読み込んだライブラリは二度読み込まないようにすればいいのではないだろうか

81 :デフォルトの名無しさん:2009/10/26(月) 00:53:10
>>80
それはそうなってるから。


82 :デフォルトの名無しさん:2009/10/26(月) 02:34:52
Ruby-mswin32版の1.9.1をインストールしたら
gemが入ってたので、ssleay32.dllとzlib.dllをbinフォルダにいれて
パスとおして
gem update --system
ってコマンド打ったら
Updating RubyGems
Updating rubygems-update
Successfully installed rubygems-update-1.3.5
:0:Warning: Gem::SourceIndex#search support for String patterns is deprecated
Updating RubyGems to 1.3.5
Installing RubyGems 1.3.5
D:/ruby-1.9.1-p0-i386-mswin32/lib/ruby/gems/1.9.1/gems/rubygems-update-1.3.5/lib
/rubygems/config_file.rb:39:in `new': wrong number of arguments (5 for 4) (Argum
entError)
        from D:/ruby-1.9.1-p0-i386-mswin32/lib/ruby/gems/1.9.1/gems/rubygems-upd
ate-1.3.5/lib/rubygems/config_file.rb:39:in `<class:ConfigFile>'
        from D:/ruby-1.9.1-p0-i386-mswin32/lib/ruby/gems/1.9.1/gems/rubygems-upd
ate-1.3.5/lib/rubygems/config_file.rb:12:in `<top (required)>'
        from D:/ruby-1.9.1-p0-i386-mswin32/lib/ruby/gems/1.9.1/gems/rubygems-upd
ate-1.3.5/lib/rubygems/gem_runner.rb:8:in `require'
        from D:/ruby-1.9.1-p0-i386-mswin32/lib/ruby/gems/1.9.1/gems/rubygems-upd
ate-1.3.5/lib/rubygems/gem_runner.rb:8:in `<top (required)>'
        from setup.rb:25:in `require'
        from setup.rb:25:in `<main>'
ってかんじで怒られた、どっか間違ったか?

83 :デフォルトの名無しさん:2009/10/26(月) 06:20:08
p0で失敗しても文句は言えんな

84 :デフォルトの名無しさん:2009/10/26(月) 07:12:57
うひょう、ruby1.9.1-p0 と ruby1.9.1-p243 で Win32API の initialize の引数の数が違う

p0
 def initialize(dllname, func, import, export = "0")
p243
 def initialize(dllname, func, import, export = "0", *rest)

rubygems-update-1.3.5 の記述

  if RUBY_VERSION > '1.9' then
   SHGetFolderPath = Win32API.new 'shell32', 'SHGetFolderPath', 'PLPLP',
    'L', :stdcall
   SHGetFolderPath.call nil, CSIDL_COMMON_APPDATA, nil, 1, path
  else
   SHGetFolderPath = Win32API.new 'shell32', 'SHGetFolderPath', 'LLLLP',
    'L'
   SHGetFolderPath.call 0, CSIDL_COMMON_APPDATA, 0, 1, path

85 :デフォルトの名無しさん:2009/10/26(月) 08:15:39
Ruby1.9.1 の Windows 用でそれをするとはいろいろな意味でチャレンジャーというか煽り屋というか

86 :デフォルトの名無しさん:2009/10/26(月) 08:20:42
そんなんただのラブレターだろ
「いますぐRuby1.9.1の最新版パッチのWindowsバイナリを公開しろ、
さもなくば基幹的デファクトスタンダードライブラリのアップデート不能を以ってRubyの価値を減じる」
というラブコール

87 :デフォルトの名無しさん:2009/10/26(月) 08:26:30
最新版のWindowsバイナリー! 早く来てくれー!

俺もコンパイルに成功すれば、Windowsバイナリ公開したいのに
make test-allがなかなか通らない……
メンテナの方々はどんな作業をやってるんだろう

88 :デフォルトの名無しさん:2009/10/26(月) 08:33:12
ttp://rubyforge.org/frs/?group_id=167
ruby-1.9.1-p243-i386-mingw32 は一応ないわけでもない

89 :12:2009/10/26(月) 10:14:19
>>13-18
Thanks
rspecはちゃんとck(cygwin)でも色分けできるんですけどね・・・。

TERMはcygwinでした。export TERM=xtermとかにもしてみたけど駄目ですタ(この辺よく理解してないです)

>>17
ついでにPower Shellも入れてみたんですが、UTF-8対応して中田 orz
nkfでUTF-16にしても化けるし意味わからんちん

90 :デフォルトの名無しさん:2009/10/26(月) 12:49:19
とりあえず ruby が糞だということは良く伝わりました
本当にありがとうございました

91 :デフォルトの名無しさん:2009/10/26(月) 12:57:45
ラブレターなら直接相手に言わないと伝わらないんじゃないか

92 :デフォルトの名無しさん:2009/10/26(月) 13:07:20
>>91
リア充は帰れ

ラブレターってのは
「○○って△△さんのこと好きなんだって」
「えーうそー△△ちゃん可哀想〜」
みたいに周りからじっくり攻めていくのが正しい姿

93 :デフォルトの名無しさん:2009/10/26(月) 13:10:00
明らかに周りからも祝福されてねーじゃねーか

94 :デフォルトの名無しさん:2009/10/26(月) 13:24:46
なにごとも一度でうまくいくことはそうそうないよ
突然話を振るよりも事前のネゴとコネと日頃のコミュニケーションが大事

95 :デフォルトの名無しさん:2009/10/26(月) 13:33:47
>>92
> 「えーうそー△△ちゃん可哀想〜」
やめろ

96 :デフォルトの名無しさん:2009/10/26(月) 14:57:09
クソワラタwww

97 :デフォルトの名無しさん:2009/10/27(火) 04:59:52
ruby1.8.7をcheckinstallでRPMパッケージを作成してインストールしたのですが、
ri -cコマンドを打っても標準ライブラリのクラスが表示されません。(Railsのクラスのみ表示される)
ri GCと打ってもNothing known about GCと出力されるのです。
これはrubyのriドキュメントがインストールされてないということでしょうか?
RPMパッケージでインストールせずにconfigureでオプション付けたりしないといけないのかな。

98 :デフォルトの名無しさん:2009/10/27(火) 05:51:33
>>97
checkinstallはよくわからないけど、自前でコンパイルするときは
./configure
make
sudo make install
sudo make install-doc # ドキュメントのインストール
が必要だった気がする

99 :デフォルトの名無しさん:2009/10/27(火) 05:59:15
質問です。Mershall使ってインスタンスの状態を保存しているのですが
一度インスタンスをnewしてdumpした後、その後オブジェクトを変更して
追加されたor削除されたクラス変数を検知して初期化したいです
どのようにしたらいいでしょうか 以下のようなソースです

class DataObj
attr_accessor :cnt
def initizalize
@cnt=0
end
end

class SaveData
attr_accessor :data
def initialize(file_name)
load(file_name)
end
 def load(file_name)
if File.exist?(file_name)
@data = File.open(file_name, "rb"){|f| Marshal.load(f) }
else
@data= DataObj.new()
end
end
def save
File.open("test.dat", "wb"){|f| Marshal.dump(@data, f) }
end
end


100 :デフォルトの名無しさん:2009/10/27(火) 06:35:07
よーわからんが、Marshalはオブジェクト全体の復元しかできない
復元してからオブジェクトが同一かどうかチェックするしかないな

255 KB
★スマホ版★ 掲示板に戻る 全部 前100 次100 最新50

read.cgi ver 05.04.00 2017/10/04 Walang Kapalit ★
FOX ★ DSO(Dynamic Shared Object)