【Ruby/SDL他】Rubyでゲーム制作・総合スレッドat GAMEDEV
【Ruby/SDL他】Rubyでゲーム制作・総合スレッド - 暇つぶし2ch544:名前は開発中のものです。
10/06/23 00:30:20 0PfZy1en
この後、展開したstarrubyのフォルダとその中身をどこにもっていけばいいのかわからない。
単純に、「install.rb」を実行しても、前に書いたように「Installation Star Ruby completed!」とメッセージが出るだけで
(前略)ruby191フォルダの中のどこにも「starruby.so」は配置されず、
無理矢理「(前略)lib\ruby\site_ruby\1.9.1\x64-svcr80」の中に入れても
「dllが見つからない」とのメッセージが表示されエラーとなる。

実は、別口でDL・展開した「ActiveScriptRuby」の方はエラーが出ていないのでこちらを使えばいいのだが、
なぜ個別ではうまくインストールできていないのかがすっきりしない
長々と書いてしまって恐縮だが、もしよければ、どうかもう少しお付き合い願いたい

545:名前は開発中のものです。
10/06/23 00:46:17 4Wd2dMWQ
mswin64のRubyでmswin32のライブラリって使えるの?

546:名前は開発中のものです。
10/06/23 17:40:26 zddUPtHq
>>544
とりあえずActiveScriptRubyで代用できてるとのことで安心した。
しかし納得いってないとのことなので、一応アドバイスしておく。

まず先に言っておくが、自分には原因はわからない。なぜって環境が無いから。なので原因究明の方法だけ。

> 「install.rb」を実行しても、前に書いたように「Installation Star Ruby completed!」とメッセージが出るだけで(略)
こういう「他人が作ったスクリプトを実行したんだけどなんかうまく動かない」という場合の鉄則は『ソース読め』。
まずは install.rb をテキストエディタで開いて中身を見てみよう。

開いてみたらファイルの最後に↓の一文があるはずだ。
 puts "Installation Star Ruby completed!"
もう分かったと思うが、このスクリプトはインストールが成功しようがどっかで失敗しようが
無条件で「Installation 略 completed!」を出力するようになってるってこと。

じゃあ何が悪いんだって話だが、こういう「スクリプトのどっかで失敗してるらしいんだけどどこで失敗してるのか分からない」という時の鉄則は『一行ずつ実行してみる』。

irb ( URLリンク(doc.okkez.net) ) を開いて、install.rb の内容を一行ずつコピペして実行してみよう
(この時絶対に手打ちはしない。typoか本当に失敗してるのか分からないから)。
で、一行実行するたびに本当にうまく動いているか確認する。たとえば FileUtils.mkdir_p(dlldir) の行なら
本当に dlldir の場所にフォルダが作られてるかを見てみる。
何をするのか分からない行があったらリファレンスマニュアル( URLリンク(doc.okkez.net) )を読む。

以上の手順を繰り返せば必ず原因が分かる。健闘を祈る。


547:名前は開発中のものです。
10/06/23 17:41:29 zddUPtHq
最後に二つほどアドバイス。

・『一度に二つのことをしない』
欲張ってruby187とruby191の両方を同時に入れようとするから問題がややこしくなる。
うまくいくまではどっちか片方の兎だけを追うべし。

・『よく整理してから質問しよう』
とりあえず↓を読むといい。>>538のような聞き方ではなかなか問題は解決しない。
最初から>>543のように質問していればもっと早く原因に迫れたはず。
URLリンク(www.hyuki.com)

長くなったが、俺ができるアドバイスはこれくらいだ。>>544がStarRubyを楽しめることを祈る。


548:名前は開発中のものです。
10/06/26 19:03:26 9CeE/+nX
返信が遅れて申し訳ない
実はまだ、言われた事が全て終わっていないが、解決までまだ時間が掛かりそうなので途中経過だけ書き込んでおく

まずはinstall.rbを分解する
#!/usr/bin/env ruby
require "rbconfig"
require "fileutils"
option = {:noop => false, :verbose => true}
dlldir = Config::CONFIG["bindir"]
sitearchdir = Config::CONFIG["sitearchdir"]
FileUtils.mkdir_p(dlldir)
FileUtils.mkdir_p(sitearchdir)
Dir.glob("dll/*.dll") do |path|
next if path =~ /zlib/ and File.exist?(File.join(dlldir, File.basename(path)))
FileUtils.install(path, dlldir, option)
end
Dir.glob("ext/*.so") do |path|
FileUtils.install(path, sitearchdir, option)
end
puts "Installation Star Ruby completed!"


一行目と二行目の区切りが怪しいが、大文字小文字を考えるとこうだろう

549:名前は開発中のものです。
10/06/26 19:04:16 9CeE/+nX
次にirbで一行ずつ実行してみた
01行目「#!/usr/bin/env ruby」はエラーは出なかった
    (今動いているrubyのインストール位置を調べてる?戻り値なんかも無いからたぶん成功したとしか言えない)
02行目「require "rbconfig"」は「true」と返ってきた(ちゃんとインクルードされた?)
03行目「require "fileutils"」は「true」と返ってきた(ちゃんとインクルードされた?)
04行目「option = {:noop => false, :verbose => true}」は{}で指定した内容がそのまま帰ってきた
    (変数optionに"「オプション無効モード」は無効に、「ログ出力」は有効に"と入れた?)
05行目「dlldir = Config::CONFIG["bindir"]」はruby本体のbinディレクリが返ってきた
    (変数"dlldir"の中にbinフォルダのフルパスが格納された?)
06行目「sitearchdir = Config::CONFIG["sitearchdir"]」ではruby\libの中のフォルダが返ってきた
    (変数"sitearchidir"の中に、.so格納予定のフォルダへのパスが格納された?)
07行目「FileUtils.mkdir_p(dlldir)」はruby1.9.1のbinフォルダが返ってきた
    (変数dlldirで指定されたフォルダを作ろうとしたが、元から存在したフォルダなのでスルーされた?)
08行目「FileUtils.mkdir_p(sitearchdir)」は六行目で指定したフォルダへのパスが返ってきた
    (七行目と同じで、元から存在してたからスルーされた?)

01行目が怪しいが、大体問題ないように見える
07行目と08行目の命令については、「FileUtils.mkdir_p(sitearchdir + "\\testdir")」などとして
ちゃんとフォルダが作られる事を確認している

550:名前は開発中のものです。
10/06/26 19:05:20 9CeE/+nX
09行目~12行目

「Dir.glob("dll/*.dll") do |path|
  next if path =~ /zlib/ and File.exist?(File.join(dlldir, File.basename(path)))
  FileUtils.install(path, dlldir, option)
 end」

13行目~15行目
「Dir.glob("ext/*.so") do |path|
  FileUtils.install(path, sitearchdir, option)
 end」

ここではエラーこそ出ないが、それぞれのフォルダの中には変化がない
each文で、各フォルダの中を調べて、各.dllやl.soが存在しなければそれをファイルのコピーを繰り返す命令のようだが
「C:\programming\ruby191\bin」の中にdllがインストールされたり
「C:\programming\ruby191\lib\ruby\site_ruby\1.9.1\x64-msvcr80」の中にstarruby.soが配置されたりもしない

551:名前は開発中のものです。
10/06/26 19:06:14 9CeE/+nX
試しに
「Dir.glob("dll/*.dll") do |path|
  puts "test" + path
 end」

などとしても何の反応もない(nilが一度だけ表示される)事から、Dir.globの中の命令が一度も実行されていないのだろうか?

ここまで付き合ってくれてありがとう。まだ原因がわかった訳ではないが
それでも問題解決まで大分前進した気がする。
例によって長々と書いてしまって申し訳ない。とりあえずこの辺をもう少し調べてみて、また何か分かったら報告させて頂く

552:名前は開発中のものです。
10/06/26 19:07:58 9CeE/+nX
ちなみに、starruby用dll(starruby-0.3.3-win32-ruby19.zipを展開して出来たdllフォルダの中にある各.dllファイル)と
同じく展開して出来たstarruby.soファイルを手動でコピーし、requireできるか試してみた所
「-e:1:in ‘require’: 193: %1 は有効な win32 アプリケーションではありません。
 -0:/programing/ruby19/lib/(中略)starruby.so (LoadError)
      from -e:1:in ‘<main>’」
と出てきた。
同じ事をruby1.8.7でやってみた所(>>547の時点であまりやるなと言われてはいたが)
ちゃんとGUI画面が表示された。ruby1.9.1(32bit版)でも同じくGUI画面が表示された
(隅々まで不備なく動くかどうか確認したわけではないが)

今回のインストールできない問題とは別に>>545で指摘された問題があるかもしれない。

553:名前は開発中のものです。
10/06/26 20:42:01 9CeE/+nX
starruby を install.so を使ってインストールする事に成功した
失敗していた理由はなんて事もない、ただカレントディレクトリの位置を設定していなかったからだった
(ちなみに、次に例に出す ruby のバージョンは、32bit版を使うために1.8.7を使っている)

まず、>>543に書き込んだ通りに ruby本体 と、それに対応した starruby をDL・展開して、DOSを起動させ、
環境変数を追加して、PCを再起動させる

この後、「カレントディレクトリを starrubyを展開したフォルダまで移動させる作業」
     (cd C:\programming\ruby187\starruby-0.3.3-win32-ruby18)
・・・が必要だったが、これを怠っていた為に install.rb の中の「Dir.glob ~ end」命令が上手く働いていなかったようだ

分かってしまえば簡単・単純なミスだが、最初は全く思いつけなかった
お騒がせしてしまって申し訳ない

ともあれ、何とか正常にインストールする事に成功した
ありがとう、この板の皆の適切なアドバイスのおかげだ
またどうしても分からない事があった出てきた時は、よろしく頼む

554:名前は開発中のものです。
10/06/26 21:44:01 +RqvD318
おつかれさま。
StarRubyをいじってゆっくりじっくり遊ぶといいよ。

555:名前は開発中のものです。
10/07/05 13:15:13 McBHvfXL
>>528-530
マルチプラットフォーム狙いじゃなくてバリバリ3Dじゃないなら(バリ3DをそもそもRubyでやるのか?はおいておいてだな)
DXライブラリ使えるならいい案だな。
国内の同人ゲームでよくつかわれているみたいで情報も多いし。

C#用のライブラリってどんなのかと思ったら、
元がC言語で他の言語でも使えるようにDLL化してあるからRubyからも使えるってことかー。

556:名前は開発中のものです。
10/07/05 13:58:30 quyLdWxB
.NET専用にC++/CLIで書きなおした、とかじゃないからね
汎用に使えるね。

557:名前は開発中のものです。
10/07/17 23:46:14 Dnvbzl3f
コチラで聞けと言われたので参りました。質問です! Rubyでゲーム作れるって聞いたので
URLリンク(jp.rubyist.net)のサイトのリンク先でsource of Ruby/SDL 1.3.0というのが見つからなかったのでrubysdl-win32-binの1.3.0をダウンロードしてprogrum file内にインストールしたRuby1.8の下にフォルダを作って解凍しました。
回答したあとinstall_rubysdl.rbを実行したら変なメッセージが出たのですが無視してテストのウィンドウだけ出すプログラムを作ってみたらファイル名:2:in `requie' : no such file to load -- sdl (LoadError)というものが出ました。
どうしたらウインドウを出す様に出来るのでしょうか。ちなみに変なメッセージはこんな感じでした。
mkdir -p C:/Program Files/ruby-1.8/bin
mkdir -p C:/Program Files/ruby-1.8/lib/ruby/site_ruby/1.8
mkdir -p C:/Program Files/ruby-1.8/lib/ruby/site_ruby/1.8/i386-msvcrt
install -c dll/jpeg.dll C:/Program Files/ruby-1.8/bin
C:/Program Files/ruby-1.8/lib/ruby/site_ruby/1.8/fileutils.rb:1264:in `initialize': Permission denied - C:/Program Files/ruby-1.8/bin/jpeg.dll (Errno::EACCES)
from C:/Program Files/ruby-1.8/lib/ruby/1.8/fileutils.rb:1264:in `open'
from C:/Program Files/ruby-1.8/lib/ruby/1.8/fileutils.rb:1264:in `copy_file'
from C:/Program Files/ruby-1.8/lib/ruby/1.8/fileutils.rb:1263:in `open'
from C:/Program Files/ruby-1.8/lib/ruby/1.8/fileutils.rb:1264:in `copy_file'
from C:/Program Files/ruby-1.8/lib/ruby/1.8/fileutils.rb:464:in `copy_file'
from C:/Program Files/ruby-1.8/lib/ruby/1.8/fileutils.rb:845:in `insrall'
from C:/Program Files/ruby-1.8/lib/ruby/1.8/fileutils.rb:1397:in `fu_each_src_dest'
from C:/Program Files/ruby-1.8/lib/ruby/1.8/fileutils.rb:1411:in `fu_each_src_dest0'
from C:/Program Files/ruby-1.8/lib/ruby/1.8/fileutils.rb:1395:in `fu_each_src_dest'
from C:/Program Files/ruby-1.8/lib/ruby/1.8/fileutils.rb:841:in `insrall'
from C:/Program Files/ruby-1.8/rubysdl-1.3.0-mswin32-1.8.5-p12/install_rubysdl.rb:26

558:つづき
10/07/17 23:47:25 Dnvbzl3f
from C:/Program Files/ruby-1.8/rubysdl-1.3.0-mswin32-1.8.5-p12/install_rubysdl.rb:26:in `globe'
from C:/Program Files/ruby-1.8/rubysdl-1.3.0-mswin32-1.8.5-p12/install_rubysdl.rb:26

以上です。宜しくお願いします。

559:名前は開発中のものです。
10/07/18 11:53:06 6fMtGEk6
あっちでも書いたが、C:/Program Files/ruby-1.8/binが管理者じゃないと書き込み権限がないとかだろ。

560:名前は開発中のものです。
10/07/18 12:28:32 ic6NNUQZ
Rubyのインストール先をProgramFiles以外にすればいいんじゃね?

561:名前は開発中のものです。
10/07/18 14:18:58 WsCVWUVt
>>559,>>560

Dドライブにインストールしなおしたら出来ました!
ありがとうございます!



最新レス表示
レスジャンプ
類似スレ一覧
スレッドの検索
話題のニュース
おまかせリスト
オプション
しおりを挟む
スレッドに書込
スレッドの一覧
暇つぶし2ch