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

Ruby 初心者スレッド Part 23

■ このスレッドは過去ログ倉庫に格納されています
0001デフォルトの名無しさん2008/11/20(木) 04:30:21
プログラミング言語Rubyについての、初心者向けスレです。質問・要望・雑談などどうぞ。

   【Ruby1.9 は不安定な開発版であり初心者には全く向きません】
   【最新安定版の Ruby1.8.7 の使用をお勧めします】
    ※1.8.7 は1.8 と 1.9 の橋渡しをするためのリリースです。
      1.9 の新機能の一部が利用可能なので初学者にお勧めです。
    ※ただし十分安定しているとは言えないので
      プロダクション環境での利用にはお勧めしません。

関連スレやURLは>>2-8あたりを見てください。Ruby on Railsの質問は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を読め」でいいので、叩かない&怖がらせない。
 ・わけわかな質問にもエスパー発揮で。できれば質問の仕方を教えるぐらいで。
 ・自信がない回答ならその旨表明すること。誤った回答は初心者じゃ見抜けない。
0652デフォルトの名無しさん2008/12/19(金) 21:20:28
>>651
同じですか
サンクス
0653デフォルトの名無しさん2008/12/19(金) 21:26:50
>>601です
いろいろフォーマット扱える Webgen に手を出したらもうぜんぜん動きません
reStructuredText とか文法いいなーと思うけどこれ Python なんだよね
教えてもらったものいろいろ試します
せんきゅです
0654デフォルトの名無しさん2008/12/19(金) 21:31:59
>>651の
>普通にファイル開いて使ってるぶんには
普通でない場合を勝手に補足。
組み込み関数のほうのopenはPerlのopenみたいに"|cat"みたいなパイプの繋ぎ方を
半端にサポートする。
あと、open-uriを使う場合も違いが出る。
0655デフォルトの名無しさん2008/12/19(金) 21:39:11
RubyでMatlabの行列ファイルを読みたいんだけどいいライブラリないですか?
0656デフォルトの名無しさん2008/12/19(金) 21:56:41
全部Matlabで完結したほうがよくね?
0657デフォルトの名無しさん2008/12/19(金) 22:06:19
>>656
実は、データファイルを持ってきてシミュレートせよという課題なんですが
Matlabがなく、OctaveはまともにWindowsでは動かないので…
0658デフォルトの名無しさん2008/12/19(金) 22:24:43
そういうのはデータファイルだけもってこいよ
0659デフォルトの名無しさん2008/12/20(土) 02:39:59
Ruby on railsは、まともなスピードで動かす場合、
月5,000円のレンタルサーバーが必要です。

一方、cakephpなら、月500円のレンタルサーバーで
十分なスピードで動きます。
0660デフォルトの名無しさん2008/12/20(土) 08:29:05
>>658
1.配布されてるデータがMatlab形式
2.解析方法がワカンネ
3.これを使ってk-NN法の実験をしなくちゃならない(レポートの提出はあさってAM10:40)
4.私はMatlabを持ってない

\(^o^)/
0661デフォルトの名無しさん2008/12/20(土) 08:42:09
>>660
エディタで開け
バイナリならMatlabスレで聞けば目で読める形式にしてくれるだろ
0662デフォルトの名無しさん2008/12/20(土) 08:53:53
>>661
バイナリですよ
で、どこの板にありますか?
0663デフォルトの名無しさん2008/12/20(土) 09:45:04
見つかりましたがなんか雰囲気が違います
0664デフォルトの名無しさん2008/12/20(土) 10:05:56
Windows版のOctaveを使ってファイルの変換だけやって
テキストファイルにしてしまえ
いくらWindows版Octaveが不安定といっても
ファイル読んで書くくらいならできるだろう

もしくは、仮想マシンにLinuxいれてでもOctaveをつかうとか
0665デフォルトの名無しさん2008/12/20(土) 10:44:07
>>664
とりあえず書き出し中。ただ、ディスクが逼迫しているのできちんと書き出せるか
かなり不安だが。
0666デフォルトの名無しさん2008/12/20(土) 10:52:43
とりあえず書き出せた。テキスト形式の解析も完了。
さあRubyでがしがし処理するか
0667デフォルトの名無しさん2008/12/20(土) 19:08:36
「10日でおぼえるRuby on Rails」と「はじめてのRuby」を読んだばかりの
Ruby歴2週間のおれに教えてくれ。

Rails2.2を入れたいのだが、Ruby1.9.0Xでいいの?1.9.1の未完成版は止めた方がいい?
仕事じゃないから人柱でもなんでもいいけど、
慣れない環境であまりにも動かないと何が何だか分からなくなってつらい。
最新版命主義だから1.8.6Xはよほどひどくないと考えていないっす。
0668デフォルトの名無しさん2008/12/20(土) 19:12:33
Rubyの最新版は1.8.7だよ
1.8.6は古いから、しがらみも資産もない新規さんなら1.8.7でウキウキ新機能をエンジョイしろ
Railsも完全に動作するし
0669デフォルトの名無しさん2008/12/20(土) 19:22:18
>>668
レスサンクス

1.8.7ってあいのこみたいなイメージがあるのだが。
1.9系みたいにマルチバイト文字列を簡単に扱いたいんだけどできる?
0670デフォルトの名無しさん2008/12/20(土) 19:51:18
結局速いのがいいから1.9.1系にしちゃった。不具合上等。サンキューな。
0671デフォルトの名無しさん2008/12/20(土) 19:54:11
さて果たして670がどうなるのか
ちょっとワクワクしてきた
06726322008/12/20(土) 20:05:21
>>633
gmail使うことにしました
我ながらなんという遅レスか
0673デフォルトの名無しさん2008/12/20(土) 20:44:50
>>660
Matlab持ってる研究室尋ね歩いて使わせてもらえ
0674デフォルトの名無しさん2008/12/20(土) 21:33:35
1.91はまだか。
06756702008/12/20(土) 22:26:30
Vista64を使ってるから、1.9.1最新(64bit)入れたけどgemが動かず。
1.9.0最新(64bit)入れたけど動かず。1.9.1最新(32bit)入れてようやくRailsのインストールまで終わった。
落としたバイナリのzlibがだめなのかなと思ったが、疲れたから完璧ということにした。
0676デフォルトの名無しさん2008/12/20(土) 22:40:31
Vista 64ビット版で1.9.1に挑戦するとは……なんという茨の道
でもそんな根性のあるユーザーは嫌いじゃないぜ
0677デフォルトの名無しさん2008/12/20(土) 22:48:29
>>676
嫌いになる可能性しかないような気がするんだが
問題切り分けできない状態でなにが勉強か
0678デフォルトの名無しさん2008/12/20(土) 23:46:21
32bitや64bitという言葉が出てくるんだから、まるっきりコンピュータの素人というわけでもなかろう。
たぶん誰も助けてやることはできないだろうけど、がんばれ。
0679デフォルトの名無しさん2008/12/21(日) 09:12:31
>>673
とりあえずなんとかOctaveでテキスト形式に変換完了。
今延々回してるがかなり長くなりそうorz
0680デフォルトの名無しさん2008/12/21(日) 09:35:39
そもそもRubyは学術計算には向かない
0681デフォルトの名無しさん2008/12/21(日) 12:18:43
>>680
何をするかに依るが、簡単な数値計算には俺は使うよ。
一行で書いて答ポンと出す感じのコード。向いてると思う。
ちょっと入り組んでる計算(シミュレーション、微分方程式、FFT etc)
だと C++ で書くけど。
0682デフォルトの名無しさん2008/12/21(日) 12:34:26
計算が多少複雑でも、コード書くことだけ考えればRubyで十分扱えると思う
むしろ問題なのは処理速度
0683デフォルトの名無しさん2008/12/21(日) 12:35:45
行列演算の結果狂ってるとかいうのなかったっけ
0684デフォルトの名無しさん2008/12/21(日) 14:07:22
学術計算にいまどきプログラミング言語か

入り組んでいる計算なら
mathematicaとかmatlabのほうが向いてると思うね
簡単な計算ならlinuxについているbcが向いてる
0685デフォルトの名無しさん2008/12/21(日) 14:09:34
mathematicaも立派な関数型言語搭載のプログラミング環境ですから
0686デフォルトの名無しさん2008/12/21(日) 14:10:34
はいはい、「汎用の」が抜けてた抜けてた
0687デフォルトの名無しさん2008/12/21(日) 14:29:33
巨大な計算をする時はやっぱmathematicaやmatlabは遅い。
とは言え、代替物としてRubyを使うのもどうかとは思うが。
0688デフォルトの名無しさん2008/12/21(日) 17:00:04
nokogiriのgemインストールが失敗します。
riの生成に失敗しているようなのですが、これはどのように対処したもんでしょうか?


> gem install nokogiri
Successfully installed nokogiri-1.0.7-x86-mswin32-60
1 gem installed
Installing ri documentation for nokogiri-1.0.7-x86-mswin32-60...
ERROR: While executing gem ... (NoMethodError)
undefined method `new' for nil:NilClass

> ruby -v
uby 1.8.7 (2008-06-20 patchlevel 22) [i386-mswin32]
0689デフォルトの名無しさん2008/12/21(日) 17:31:48
>>681
計算時間の見積もりが4日とかorz
256次元のベクトルの距離を頻繁に求めるので手間かかりすぎ。
ある1本と別の4000本との距離を求めるだけで45秒。
使ってるクラスはmatrixに入ってるVectorクラス。
0690デフォルトの名無しさん2008/12/21(日) 19:55:22
>>688
$ gem install --no-ri nokogiri
とりあえず。ちなみに gem help install で調べられる。

ruby 1.8.7 (2008-08-11 patchlevel 72) [i386-mswin32]
gem 1.3.1
では問題は起きなかったっす。
0691デフォルトの名無しさん2008/12/21(日) 21:08:15
>>690
rdocもなんか失敗したので、これでいけました。
gem install --no-ri --no-rdoc nokogiri
ありがとう。
0692デフォルトの名無しさん2008/12/21(日) 21:10:09
ちょいと質問なのですが、
HTMLファイルの一部を書き換えたいのですが、
nokogiriとか使うとパースや部分的なノード置換がすごく楽なのですが、
出力すると(to_html)元のHTMLがかなり崩れてしまいます。

元のHTMLをなるべく維持したい場合はどうしたらよいものでしょうか?
0693デフォルトの名無しさん2008/12/21(日) 21:13:02
見掛けが崩れるだけで、htmlとしては大部分が同じはずだが
HTML上の改行位置や空白数なんかも維持したい場合は正規表現で置換するしかないな
0694デフォルトの名無しさん2008/12/21(日) 21:19:33
フラットな処理で何とかなるならHTMLSplitとか
0695デフォルトの名無しさん2008/12/21(日) 21:35:38
rubygemsのsyntaxってあんじゃん
なんていうか、マトモなCSSってどこかにない? vimやEmacsのハイライト意識したやつとか
RubyとHTMLのだけあればいいんだけど

あのRubyのとか酷過ぎるだろ常識的に考えて
0696デフォルトの名無しさん2008/12/21(日) 21:42:02
>>693-694
レスありがとう。

なるたけ維持したかったので、頑張って正規表現でgsubしてみました。
そんなに複雑じゃなかったのでなんとかなったみたいです。
お騒がせしました
0697デフォルトの名無しさん2008/12/21(日) 22:03:17
for i in 1..50
hoge
end
の 50 を a を Array として
for i in 1..(a.size)
としたらだめのようでした。
aのサイズだけ for を走らせたい場合、Ruby はどうするのがよいでしょうか?
0698デフォルトの名無しさん2008/12/21(日) 22:07:31
普通はこうする。

a.size.times { |i| p a[i] }
0699デフォルトの名無しさん2008/12/21(日) 22:09:38
>>697
a.each do |e|
p e
end

Ruby では for はまず使わない
0700デフォルトの名無しさん2008/12/21(日) 22:10:35
>>697
よのどのことがないかぎり、Rubyでは単純ループにforは使わないと慣習があるぞ
>>698 でよいかと思う
0701デフォルトの名無しさん2008/12/21(日) 22:10:50
インデックスが欲しければこう

a.each_with_index { |e, i|
}
0702デフォルトの名無しさん2008/12/21(日) 22:11:32
ごめん、>>699だ
0703デフォルトの名無しさん2008/12/21(日) 22:13:40
a のサイズ分ループしたいけど、
a の要素を使わない時は >>698 だっしょ。
a の要素を単に順番に使いたいだけの場合は >>699 で、
a の要素とそのインデックスを両方使いたい場合は >>701 だ。
0704デフォルトの名無しさん2008/12/21(日) 22:17:21
>>698-701
みなさま本当にありがとうです。
for をそもそも使わないのか・・・そもそも入門からおかしかったようです。
0705デフォルトの名無しさん2008/12/21(日) 22:19:16
もちろん普通はfor使わないのは分かるんだがなんで>>697が動作しないんだ?
範囲式に制限でもあるのか?
0706デフォルトの名無しさん2008/12/21(日) 22:21:00
0 オリジンじゃないから
配列にアクセスする部分で死んでるとか
0707デフォルトの名無しさん2008/12/21(日) 22:23:11
そうだな
50番目の a[i] で nil の NoMethodError でも出てるのだろう
07087052008/12/21(日) 22:33:17
なるほど。自分も初心者だが確かにやりそうだ。
まあこういうのを防ぐ為にもforは使わないってことだな。
0709デフォルトの名無しさん2008/12/21(日) 23:14:47
Rubyを書き慣れてくると、forの書き方はちょっと考えないと
思い出せないようになってくる。
0710デフォルトの名無しさん2008/12/21(日) 23:17:48
freezeしたHashの要素を変更するシンプルな方法はありますか?
freezeの意味ないやんってなるけど仕様変更で一か所だけ要素を変更する必要があります
freezeしているクラスと同じクラス内なので影響が他のクラスに及ぶことはありません
0711デフォルトの名無しさん2008/12/21(日) 23:52:38
>>695
「酷すぎる」って言ってるのが
syntax-*/data/ruby.css とかのことだったら、あれ以上のもので公開されてるのは多分ない。
0712デフォルトの名無しさん2008/12/22(月) 00:08:51
>>680-687
遅レスだが(というかなぜか今日は流れ速い)、俺がよく ruby 使うのは
簡単な計算でパラメータ変えて繰り返して使う式ですぐ答が欲しいときかな。
わざわざ Mathematica とか Maple, Maxima 立ち上げる気がしない程度のもの。
あと、これらでもプログラム書けるけど個人的には ruby の coding の方が好き。
3次方程式の解レベルの複雑さ。Ruby で端末でパラメータ入力して結果
すぐ帰ってくる。bc, とかではできない。多少複雑なら C++ で書いてる。
ruby は遅いし、書き捨て的に使ってるし、mma, maple, maxima とかでも
遅すぎることも多い。

0713デフォルトの名無しさん2008/12/22(月) 00:45:33
>>710
h = {:ary => [1]}.freeze # => {:ary=>[1]}
h[:ary][0] = 2
p h # =>{:ary=>[2]}

Hashオブジェクトをfreezeしてもその中にあるオブジェクトまでは
freezeされてないから、それを直接書き換えるとか。
これ、本来はfreezeの落とし穴だから気をつけて。
0714デフォルトの名無しさん2008/12/22(月) 01:38:05
要素を変更したいんですー
h = {:ary => 1}.freeze
h[:ary] = 2
0715デフォルトの名無しさん2008/12/22(月) 01:46:09
Are you happy?
0716デフォルトの名無しさん2008/12/22(月) 02:00:18
じゃあdupしてfreezeされてないコピーに差し替えれば?
と言いたいけど別のところに参照されちゃってるんだろうなぁ。

そもそもfreezeしてるコードをいじれるならfreezeやめれば
いいじゃんと思うんだけど、freezeしないといけない理由を詳しく。
0717デフォルトの名無しさん2008/12/22(月) 03:08:37
文字通り邪悪だけど、
evil-ruby gemをインストールして h.unfreeze
0718デフォルトの名無しさん2008/12/22(月) 06:52:25
>>710
出来ないことはないけど、不可能と考えて別の方法を探すべきだと思われる
そもそも、freezeされてるってことはそれなりの理由があるんじゃないのか?
0719デフォルトの名無しさん2008/12/22(月) 10:55:22
>>710
びみょーに違うけど、こんなん(不完全だけど)をextendして
freezeを遅延させるとか…? やっぱ変だな

# 一箇所だけ変えたいところのキーは'hoge'決めうち
module HashLasyFreeze
 def []=(key, val)
  ret = super
  freeze if key == 'hoge'
  ret
 end
end
0720デフォルトの名無しさん2008/12/22(月) 15:28:52
いくつかのサイトの更新状況を取得するプログラム組んでいるのですが、
File::statしてatimeしたいのですが、サイトで公開されているページの最終更新時間など取得する場合どのようにすればいいのでしょうか。
0721デフォルトの名無しさん2008/12/22(月) 15:33:54
>>720
require 'net/http'
Net::HTTP.version_1_2
Net::HTTP.start('www.example.com', 80) {|http|
 response = http.get('/index.html')
 puts response['last-modified']
}
こんな感じ。
0722デフォルトの名無しさん2008/12/22(月) 20:27:20
WindowsXP SP3、OneClickInstaller
デスクトップ(や他のアプリケーション上)に文字列を表示させるソフトを作りたいのですが、
それが可能なGUIツールキットってあるのでしょうか?

ググってみたところ、ウィンドウの半透明化ができれば可能そうだと思ったのですが、
それが可能なツールキットを探すことができませんでした。

ご存知の方いらっしゃれば教えてください。
0723デフォルトの名無しさん2008/12/22(月) 20:37:03
いわゆる付箋ソフトだな

Rubyでやるこっちゃないねえ
他のC#とかで作れるようになってからその知識を流用してRuby+GUIでやれ
95パーセントくらいRuby無関係だし
0724デフォルトの名無しさん2008/12/22(月) 20:40:41
Win32OLE.rb
0725デフォルトの名無しさん2008/12/22(月) 20:51:05

def getWindowLong(hwnd, index)
api = Win32API.new('user32', 'GetWindowLong', 'LL', 'L')
return api.call(hwnd, index)
end
def setWindowLong(hwnd, index, gwl)
api = Win32API.new('user32', 'SetWindowLong', 'LLL', 'L')
return api.call(hwnd, index, gwl)
end
def setLayeredWindowAttributes(hwnd, crkey, alpha, flags)
api = Win32API.new('user32', 'SetLayeredWindowAttributes', 'LLLL', 'L')
return api.call(hwnd, crkey, alpha, flags)
end
gwl = getWindowLong(hwnd, GWL_EXSTYLE)
gwl &= ~WS_EX_LAYERED
gwl |= ((ratio != 100) ? WS_EX_LAYERED : 0)
gwl &= ~WS_EX_TRANSPARENT
gwl |= (transparent ? WS_EX_TRANSPARENT : 0)
setWindowLong(hwnd, GWL_EXSTYLE, gwl)
setLayeredWindowAttributes(hwnd, (ckey ? color : 0),
((255 * ratio) / 100), (LWA_ALPHA | (ckey ? LWA_COLORKEY : 0))
)
0726デフォルトの名無しさん2008/12/22(月) 20:55:22
GWL_EXSTYLE = 0xFFFFFFEC
WS_EX_LAYERED = 0x00080000
WS_EX_TRANSPARENT = 0x00000020
LWA_COLORKEY = 0x00000001
LWA_ALPHA = 0x00000002
0727デフォルトの名無しさん2008/12/22(月) 20:56:50
>>723
うむ、95パーセントくらいRuby無関係だな
07287222008/12/22(月) 21:11:41
>>724-726
レスありがとうございます。試してみます!

>>723,727
既存のrubyプログラムの処理結果をデスクトップに書きたかったんです。
rubyでどう頑張ってもダメならC#覚えるつもりでした。助言ありがとうございます。
0729デフォルトの名無しさん2008/12/22(月) 21:33:18
rubyで幾つかのオブジェクトを生成・初期化したかったので、
a=b=c=d=Array.new
とかやったら、全部が同じオブジェクトを指してしまうという大惨事に見舞われました。

Cとかなら int a=b=c=d=0;
とか書いて複数の変数の生成・初期化が問題なく行われるんですが、rubyでこれをやると
同じオブジェクトが参照されてしまうのってどうなんですか?
0730デフォルトの名無しさん2008/12/22(月) 21:37:50
>>729
だってそれは初期化でもなんでもなく、単に同じオブジェクトを指すように指示してるだけだもの
そのオブジェクト内容が変化すれば全部が変化するというそんだけの話
オブジェクトという考え方をRubyでは無視せんでくれ

a = Array.new
b = Array.new
c = Array.new
d = Array.new

こうだな
Arrayオブジェクトを生成する使い方をしてるならArray.newではなくnilでもいいかも
0731デフォルトの名無しさん2008/12/22(月) 21:38:46
Cでポインタ使ったことある?
0732デフォルトの名無しさん2008/12/22(月) 21:46:33
>>729
Array.newが一度しか実行されなければ、Arrayのオブジェクトは一つしか生成されない
って見方もできるかと
0733デフォルトの名無しさん2008/12/22(月) 21:47:27
a,b,c,d=Array.new*4
0734デフォルトの名無しさん2008/12/22(月) 21:50:15
あーはいはい

>>729
Ruby は代入文も値を返す

a=b=c=d=Array.new

は

d=Array.new
c=d
b=c
a=b

と全く同じだ
a が b=c=d= を「透過して」 Array.new を起動することはない
0735デフォルトの名無しさん2008/12/22(月) 21:54:50
>>730
たとえば、100個のオブジェクトを生成・初期化したいときには、
a1=Array.new
a2=Array.new
   ・
   ・
   ・
a99=Array.new
a100=Array.new
って書かなきゃだめなの?
a自体をarrayにしろと言われそうだけど、多数のオブジェクトを生成・初期化したい場合は
一行に一個書くしかないの?
0736デフォルトの名無しさん2008/12/22(月) 21:56:01
そのためにもArrayを使えよw
0737デフォルトの名無しさん2008/12/22(月) 21:56:46
a = Array.new(100)
a.each { |b| b = Array.new }
07387352008/12/22(月) 22:00:14
どうやら俺はデータ構造というものについて真剣に考えるべき時期に来たようだ。
Rubyだけですむ話ではなさそうだ。すまん。このスレからは消えることにする。
0739デフォルトの名無しさん2008/12/22(月) 22:09:53
a1=Array.new
a2=Array.new
   ・
   ・
   ・
a99=Array.new
a100=Array.new

まじでこういうソース見たことあるよ
某上場電気メーカーのソフトウェア部門で
0740デフォルトの名無しさん2008/12/22(月) 22:13:20
そいつの方が給料いっぱいもらって勝ち組みなんですね
わかります
0741デフォルトの名無しさん2008/12/22(月) 22:30:43
1.upto(100) {|i| eval "a#{i} = Array.new" }

1.9だと外側のbindingをevalに渡す必要があったりするのかな。
0742デフォルトの名無しさん2008/12/23(火) 00:30:25
>729
その文って、Cで書くとすれば
int array[] = {3,4,7,2,9,1};
int *a,*b,*c,*d;
a=b=c=d=array;
みたいな感じでは?だからCでも全部同じ配列を指してしまうのは変わりないよ
Rubyでも、Fixnum同士ならその代入でも問題は起こらん
違うのは構造体やクラスから生成した、実体同士の代入ってのがRubyに無いことかな
0743デフォルトの名無しさん2008/12/23(火) 02:50:57
Dir.glob("./*")

で、ディレクトリを含まないリストを得るにはどうやったら良いのでしょうか?
0744デフォルトの名無しさん2008/12/23(火) 02:54:55
globは糞なのでls, dirを使いましょう
0745デフォルトの名無しさん2008/12/23(火) 02:59:04
なるべく機種依存のコーディングは避けたいんですが・・・
0746デフォルトの名無しさん2008/12/23(火) 03:04:57
Dir.glob("*").select {|f| !File.directory?(f) }
かな。ちなみに "./" は不要。
0747デフォルトの名無しさん2008/12/23(火) 03:18:27
少しスレ違いかもしれませんが、特定のファイルをscanした時だけ
500 Internal Server Errorして落ちてしまうのですが、
タグ内で異様にスペースがやたらあるような文字列にscanすると異様に負荷がかかるとか聞いたことありませんか?
0748デフォルトの名無しさん2008/12/23(火) 04:40:50
>>746
なるほど。ディレクトリ判定を入れればいいのですね。ありがとうございます。
0749デフォルトの名無しさん2008/12/23(火) 06:41:46
>>747
Ruby自体はHTTPのエラーを出さない
それは、サーバが実行したコマンドが正規の出力をしなかったという意味しか持たないよ
原因を知りたかったら勝手な推測は止めて、その正規ではない出力が何かを調べる

コマンドラインから実行すれば一発だが、どうせコマンドラインから実行できないんだろうから、スクリプト内の実行部分を

begin



rescue Exception => e
File.open('/自分のディレクトリ/error.txt', 'w'){|f| f.print(e)}
end

で囲んでRubyの出す例外出力を読め
0750デフォルトの名無しさん2008/12/23(火) 07:43:45
>>600
wikiみろ
07517502008/12/23(火) 07:44:16
誤爆
■ このスレッドは過去ログ倉庫に格納されています