トップページ⇒tech
1001コメント323KB

Ruby初心者質問スレPart2

レス数が1000を超えています。これ以上書き込みはできません。
0001デフォルトの名無しさん05/02/08 03:02:27
オブジェクト指向スクリプト言語Rubyについての質問スレッドです。
Ruby Home Page
http://www.ruby-lang.org/ja/

前スレ
Ruby初心者質問スレPart1
http://pc5.2ch.net/test/read.cgi/tech/1100534824/

本スレ
Rubyについて Part 14
http://pc5.2ch.net/test/read.cgi/tech/1103997158/

0951デフォルトの名無しさん2005/08/29(月) 20:44:45
class A
class B
end
end

とするのと

class A::B
end

とするのって何か違いがあるんでしょうか?
0952デフォルトの名無しさん2005/08/29(月) 21:07:21
後者は class A が既に存在していなければ NameError
0953デフォルトの名無しさん2005/08/29(月) 21:39:52
質問が悪かったようです。後者がこういう場合だと、違いはあるでしょうか?

class A
end
class A::B
end
0954デフォルトの名無しさん2005/08/29(月) 21:48:34
そういうシンプルすぎる例は例にならないと思うが、
>>953はModule Aが既に存在していればエラー。
0955デフォルトの名無しさん2005/08/29(月) 21:49:40
というのは前者もそうか。
0956デフォルトの名無しさん2005/08/29(月) 23:01:30
ソースを見易くするのに役立つとか……
0957デフォルトの名無しさん2005/08/29(月) 23:03:40
Aクラスに後付でA::Bを追加するときは後者になるわな。
最初からA、A::Bの構成が決まってれば前者。

とか云ってみるテスト。
0958デフォルトの名無しさん2005/08/29(月) 23:12:02
>>941
ちょっと原著第2版をめくってみた。
Unitテスト, irb, RDoc, RubyGems あたりの記述がある程度しっかりなされてる感じ。
あと、WEBrickやSOAP、System Hookなんかについてちょろちょろと加筆してある。
組み込みクラスのリファレンスは1.8で追加されたものもしっかり網羅されていていいね。
ただ、標準ライブラリは簡単な例の記述にとどまっているので、過度の期待は禁物。
とはいえ、比較的新しい内容もここまでコンパクトに収まってるのはすごいけど。

翻訳を待つかどうかはともかく、リファレンスになるようなRuby本って最近少ないから、
買い換えても損はないかも。
0959デフォルトの名無しさん2005/08/30(火) 02:46:03
Rubyは、ドキュメントしっかりして欲しい。
標準添付のライブラリに関して。
0960デフォルトの名無しさん2005/08/30(火) 03:08:09
RubyはドキュメントとRubyistが駄目。
0961デフォルトの名無しさん2005/08/30(火) 08:14:13
Rubyとデータベースを使ったCGIプログラミングをしようと思っているんですが、お薦めの書籍はありますか?
「Ruby-DBウェブデザイン」という本はAmazonでものすごく酷評されてましたので避けるとして、
「基礎から学ぶWebデータベースプログラミング」という本は評価が特にありませんでした。
後者の方に関しての感想をお持ちの方や他にお薦めの本があれば教えてください。
0962デフォルトの名無しさん2005/08/30(火) 08:20:40
>>961
今からやるんだったら、ウェブ上で Rails を勉強するのが一番早い。
それ以外で勉強しても、結局 Rails に置き直したくなるだろうし。
0963デフォルトの名無しさん2005/08/30(火) 09:06:56
Railsというと、Rubyist Magazineで連載されてますよね?
読んでさっぱりわからないのですが、難しくはありませんか?
わかりやすい説明をしているサイトや本があれば知りたいのですが。
一応頑張ってみようとは思いますが、難しそうなのでできるかどうかわかりません。
他にお薦めの本などがありましたら引き続きお願いします。
色々検討してみたいと思っています。
0964デフォルトの名無しさん2005/08/30(火) 09:20:53
そこでこれですよ。
Agile Web Development With Rails: A Pragmatic Guide
http://www.amazon.co.jp/exec/obidos/ASIN/097669400X/
0965デフォルトの名無しさん2005/08/30(火) 09:29:39
>>964
翻訳予定ありますか?日本語でなら是非とも読んでみたいです。
0966デフォルトの名無しさん2005/08/30(火) 09:33:06
>>965
出る予定らしいぞ。いつになるかは知らん。
0967デフォルトの名無しさん2005/08/30(火) 09:40:38
>>967
そうですか。早く出ればいいのですが。
0968デフォルトの名無しさん2005/08/30(火) 09:40:41
rubyのアプリケーションについて質問致します。
alexandriaをFC4にインストールしました。
日本語の本のISBNをいれると、本の題名が化けます。
コードは、ja-JP.UTF-8になっているので、メニューは日本語になります。
どこを直せば、日本語の書名が出るのでしょうか。
0969デフォルトの名無しさん2005/08/30(火) 10:40:20
ググると情報が出てくるね。
でも、Ruby製とはいえソフト固有の問題をここで質問するのはどうなんだろ……

ttp://rubyforge.org/tracker/index.php?func=detail&aid=2030&group_id=205&atid=863
ttp://arika.org/diary/20040613#p02
0970デフォルトの名無しさん2005/08/30(火) 11:47:43
RubyのWebアプリで、アプリを使用するユーザを登録するCGIを書いています。
Apache/1.3.26

ユーザを登録した場合、ApacheのDocumentRoot "/var/www/html/"に"/var/www/html/user/ユーザ名"という感じでユーザ名でディレクトリを作成したいのですが、
Apacheのerror.logに
mkdir: cannot create directory `/var/www/html/user/ユーザ名: Permission denied
とでます。

これはどう権限を変更すればいいのでしょうか?
ちなみに、このディレクトリを作成するコマンドはクラスとして、rubyのライブラリ保存ディレクトリに保存しています。
(/var/www/html/に保存しても、結果は同じです。)

ディレクトリを作成するRubyのコードは
ttp://www.openspc2.org/reibun/Ruby/unix/001/
を参考にしました。
0971デフォルトの名無しさん2005/08/30(火) 12:15:43
>>970
まず、CGIを実行しているユーザーを特定しましょう。
OSや設定によって違うけれども、www とか nobody とか、apache とかが多い。
SuExec で、他のユーザーになっているかもしれないけど。

それから、そのユーザーで /var/www/html/user に書き込みが出来るか(ディレクトリが作れるか)
調べてみましょう。
0972デフォルトの名無しさん2005/08/30(火) 12:22:19
>>971
あぁ!そうでした!(;´Д`)すいません。
ユーザ名とグループ名のnobodyが思い出せませんでした。ご迷惑おかけしましたm(_ _"m)ペコリ
0973デフォルトの名無しさん2005/08/30(火) 12:46:14
>>963
まあ、あなたのレベルに拠るからね。

「さっぱり分からない」のは、ruby が分からんのか、CGIの仕組みが分からんのか、
Railsの仕組みが分からんのか、それにも拠るからね。
09749512005/08/30(火) 13:18:18
わかったようなわからないような・・・

ええと、やりたいことは、

class A
 class B
  class C
   ...
  end
 end
end

というコードがあるのですが、インデントが深すぎコードが見づらく書きづらいので、

class A
 class B
 end
end

class A::B::C
 ...
end

と書き換えようと思ったのですが、
このような書き換えを行うと何か副作用が生じたりするでしょうか?
何か思わぬ落し穴や注意すべき点などあれば教えてください。
0975デフォルトの名無しさん2005/08/30(火) 13:59:34
そもそものクラス設計が既に落とし穴にはまっているような気がするな。
なんでそんなにクラスを入れ子にするのよ?
0976デフォルトの名無しさん2005/08/30(火) 14:02:26
>>974
どっかで継承関係を忘れたりしてなければ問題ない。
09779512005/08/30(火) 14:03:40
名前空間が重ならないようにするためです。
具体的に言うと、弊社の名前、部署の名前、プロジェクト名などを付けています。
Company::Division::Project::Klass みたいな。
09789512005/08/30(火) 14:04:56
>>976
なるほど。ありがとうございます。
09799512005/08/30(火) 17:04:51
定数参照がハマりどころでしょうか?

class A
 B = 1
 class C
  def b
   B
  end
 end
end
p A::C::new.b

を、先述のように、
class A::C; def b; B; end; end
のように書き直すと NameError になりますね。
class A::C; def b; A::B; end; end
のようにしないとダメなようです。

このあたり、リファレンスマニュアルを見てもいまいちピンとこないのですが、
定数参照は、モジュールの階層を検索していっているのではなくて、
モジュール定義のネストを検索しているということでしょうか?
0980デフォルトの名無しさん2005/08/30(火) 19:42:59
> 名前空間が重ならないようにするためです。

Javaのパッケージの影響か。。。
名前空間のためだけならモジュール使えば?
'#{弊社の名前}_#{部署の名前}_#{プロジェクト名}' みたいにでもして。
0981デフォルトの名無しさん2005/08/30(火) 19:47:51
>>977
お前んとこは社内でプロジェクト名がかぶるのか。
組織変更とかあったら大変だな。
0982デフォルトの名無しさん2005/08/30(火) 20:26:24
どっちにしても社名が変われば大変
0983デフォルトの名無しさん2005/08/30(火) 21:58:42
職業プログラマって馬鹿なんだね。
09849512005/08/30(火) 22:15:03
標本数 1 で「職業プログラマ」と汎化してしまうのもどうかと思いますが、
社名・部署名を使うかどうかはともかくとして、
モジュールの階層をカテゴリで分類して名前空間の衝突を避ける、
というのは一般的ではないということでしょうかね。
標準添付ライブラリなどでもそういう例がいくつかあるように思うのですが。

いずれにせよ、ここでこれ以上聞いても満足な回答が得られそうにないので、
このへんにしたいと思います。
0985デフォルトの名無しさん2005/08/30(火) 23:25:26
> 社名・部署名を使うかどうかはともかくとして、
いや、社名・部署名を使うことが問題だって言ってるのに、ともかくとされても。
0986デフォルトの名無しさん2005/08/31(水) 00:37:49
典型的な自分は賢いと思い込んで迷走するパターンだな
0987デフォルトの名無しさん2005/08/31(水) 01:36:33
インデント深くしないために soap4r みたいにするのはさすがにみっともないな
0988デフォルトの名無しさん2005/08/31(水) 03:34:16
起動の仕方教えて下さい><
0989デフォルトの名無しさん2005/08/31(水) 03:35:43
ただ規約に従ってるだけの奴をいちいち叩く奴はアフォ
0990デフォルトの名無しさん2005/08/31(水) 04:46:45
起動の仕方教えて下さい
0991デフォルトの名無しさん2005/08/31(水) 05:04:44
>>990
起動って……何のよ? Ruby か?

Windows(NT系) なら "ファイル名を指定して実行" → cmd [OK] して以下をやってみる。

C:\...> ruby --version
C:\...> ruby -e 'puts "Hello, World!"'

既に Ruby スクリプトを書いたのなら、
そのスクリプト(例えばファイル名 sample.rb)があるディレクトリで以下をやってみる。

C:\...> ruby sample.rb

インタプリタなんだから、スクリプトと組み合わせる。
DOS が分からないのなら、まずそこから学習しなきゃならんのかも。
開発環境などによっては、不要かもしれない。
Windows のやつは、ダブルクリックで実行できる様になってたのもあった気がするが。
0992デフォルトの名無しさん2005/08/31(水) 05:32:54
>991
レスありです
ところで迷惑ついでに教えて欲しいんですが
日本産ルビーと外国産ルビーってなんかしら関係あるんですか?
どっちが先?
0993デフォルトの名無しさん2005/08/31(水) 06:04:58
作者はこの人
ttp://www.rubyist.net/~matz/

日本産も外国産もないと思うよ。同一。
基本的には、作者が日本人という関係で、
まず日本で普及して、海外にも普及してったという流れかと。
最近では、海外の方が勢いがありそうだけど。
0994デフォルトの名無しさん2005/08/31(水) 06:15:48
レスどもです
0995デフォルトの名無しさん2005/08/31(水) 06:18:37
>>963
【Agile】Ruby on rails相談所【DRY】
http://pc8.2ch.net/test/read.cgi/php/1118663500/
0996デフォルトの名無しさん2005/08/31(水) 07:21:07
>>992
外国産というとミャンマーのが有名だな。
0997デフォルトの名無しさん2005/08/31(水) 07:22:49
Rubyはアメリカ発だから外国産とは主に日本人向けの処理系をさす
0998デフォルトの名無しさん2005/08/31(水) 08:11:12
>>973
Rubyはわかってると思います。
CGIの仕組みはおぼろげながらもわかってると思います。
Railsの仕組みがさっぱりわかりません。
あとデータベース関係が初歩的な事しかわかりません。
0999デフォルトの名無しさん2005/08/31(水) 12:23:26
>>998
じゃあ、Rails は、

 データベースの情報を元にビュー(テンプレート)やコントローラー、
 モデル用のスクリプトを適当に自動生成して運用する

というのはオッケイ?

「ビュー」「コントローラー」「モデル」で引っかかるの?
1000デフォルトの名無しさん2005/08/31(水) 15:47:04
>>999
そこらへんがやっと理解できてきました。
と言っても、実はWEB+DB PRESS vol.28という本を買ってきました。
丁度Ruby on Railsの特集記事があって丁度そういうような事が書いてありますね。
面白そうです。
10011001Over 1000Thread
このスレッドは1000を超えました。
もう書けないので、新しいスレッドを立ててくださいです。。。
レス数が1000を超えています。これ以上書き込みはできません。