rubyの日本語名関数が使えない問題の解決策

このQ&Aのポイント
  • rubyの環境を変えたところ、日本語の関数名が使えなくなりました。どのように解決すれば良いでしょうか?
  • 外部rubyファイルに定義されている関数が呼び出せない問題が発生しています。解決策はありますか?
  • rubyの日本語名関数が使えなくなったため、外部ファイルの関数を呼び出すことができません。どのように対処すれば良いでしょうか?
回答を見る
  • ベストアンサー

rubyの日本語名関数

rubyの環境を変えたところ日本語の関数名が使えなくなりました。 解決策があればお願いします。 [環境] OS:Windows VISTA ruby:1.8.7-p330-i386-mswin32 (外付けHDDに展開して利用) 実行方法:cmd.exe /k "ruby.exeのパス" "rbファイルのパス" で実行 [以前の環境] OS:WINDOWS XP ruby:ActiveScriptRuby(1.8.7-p330) (Cドライブにインストール) [ソース(外部rubyファイル元.rb)] # EUC-JP :-Ke # SHIFT-JIS :-Ks # UTF-8N :-Ku # SHIFT-JISコード設定にしました #! ruby -Ks def 元関数() print "元関数だよ!\n" end require '外部rubyファイル先' print "外部ファイルの関数を実行\n" 先関数() print "内部ファイルの関数を実行\n" 元関数() print "Enterキーを押してください\n>" a = gets.to_i [ソース(外部rubyファイル先)] def 先関数() print "先関数だよ!\n" end

  • graf_
  • お礼率90% (28/31)
  • Ruby
  • 回答数1
  • ありがとう数4

質問者が選んだベストアンサー

  • ベストアンサー
  • notnot
  • ベストアンサー率47% (4846/10257)
回答No.1

ソースは本当に上記の通りですか? #! ruby -Ks は、1行目に書かないとオプションが有効になりませんので、文字コード無指定になってしまいます。 同じソースで以前は出来ていたのなら、環境変数 RUBYOPT に -Ks が入ってたんでしょう。

graf_
質問者

お礼

回答ありがとうございます 長い間放置しまして申し訳ありません。 理由がつかめなかったため、悩んでいましたが、 たったいま、「ruby.exe」にパスが通っていなかった ことが判明しまして、それが理由でした。

関連するQ&A

  • RubyでCGIが動きません。

    RubyでCGIを作ってApacheを使ってアプリの練習をしようとしていますが、CGIのお置き場所かApacheの設定かCGIの書き方が悪いのかIEで動かすとCGIの内容を中途半端に実行して下記のようになってしまいます。 #!/ruby/bin/ruby -Ks print "Content-type: text/html\n\n" print "" print "" print "" print "" print "こんにちは、Ruby!" print "" CGIのソースは #!/ruby/bin/ruby -Ks print "Content-type: text/html\n\n" print "<html><head>" print "<meta http-equiv=\"Content-Type\" content=\"text/html; charset=Shift_JIS\">" print "<title>RubyでCGI</title></head>" print "<body>" print "こんにちは、Ruby!" print "</body></html>" 一番簡単なプログラムだと思うのですが、どこがいけないのでしょうか。ちなみにOSはVISTAです。 ちょっと気になるのはApacheMonitorServerが動かないこともあります。タイトルにはErrorと出ますが、メッセージでは「この操作を正しく終了しました」と出ます。 ちなみにApacheは動いてます。LocalHostで確認できました。 どなたかどうすれば良いのか教えて頂けないでしょうか。 よろしくお願いします。結構長い時間悩んでいます。

    • 締切済み
    • CGI
  • RubyとMeadow(Emacs)について

    RubyとMeadow(Emacs)について 自分のパソコンにRubyとMeadowをインストールしたんですが、 Meadowでソースプログラムを作ってからコマンドプロンプトでそれを実行しようとすると ’ruby’は、内部コマンドまたは外部コマンド、 操作可能なプログラムまたはバッチ ファイルとして認識されていません。 と出てきてしまいます。 どうすれば実行できるのでしょうか? 教えていただきたいです。 ちなみにこれは夏休みの宿題で、 プリントに書かれていたとおりにやりました。 間違いがないか自分でなんども確認しましたが、 たぶん書いてあることは間違っていないと思います。 どのようにやったかというと、 Meadowでhello.rbというファイルに print("Hello, Ruby World !\n") と打ち込み、c:\progIに保存。 コマンドプロンプトを開いて progIに移動し、 ruby hello.rb →[Enter] です。

    • ベストアンサー
    • Ruby
  • rubyのファイルを実行できません。

     Debian(Woody)の環境です。 #find ./ -name ruby ./usr/bin/ruby ./usr/share/doc/ruby ./usr/doc/ruby ./usr/lib/ruby があり、/usr/binにrubyのファイルが確認できます。 $ruby -v ruby 1.6.7 (2002-03-19) [i386-linux] が出ます。pathが通っています。 $ ruby -e 'print "hello World\n"' で hello World もちゃんどでます。 しかし、vi hello.rbで、中には ------------------- #!/usr/bin/ruby print "Hello World!\n" --------------------- と、実行権-rwxr-xr-xにします。 %hello.rb では: bash: hello.rb: command not found が出て,実行できませんでした。 ファイルの中に、#!/usr/lib/rubyに代えてもおなじでした。  因みに %env で ... PATH=/usr/local/bin:/usr/bin:/bin:/usr/bin/X11 ... がでます。  アドバイスをよろしくお願いします。

    • 締切済み
    • CGI
  • Rubyでの日本語コードの指定

    同じrubyスクリプトを、MacOSとWindowsで動かしたいと思っています。 日本語が正常に表示されないのでいろいろやっていく内に、解せないことがあります。 MacOS上で puts($KCODE) puts("テスト") という2行のファイルを、UTF-8、及び S_JISで保存してそれぞれ -Ku -Ks オプションをつけて実行させてみると、S_JISの方は正しく表示されません。 $KCODEの値は正しく SJIS になっていました。 Windwsで同じファイルを走らせると、S_JISの方は正しく表示されますが、UTF-8 の方が正しく表示されません。 rubyのバージョンは1.8.7、エディタは mi を使用しました。 なにか勘違いしてるのでしょうか?

    • ベストアンサー
    • Ruby
  • rubyがInternalServerError

    こんばんは。 自鯖にて初めてrubyを動かそうとしたところInternalServerError(500エラー)が帰ってきます。 まず、httpd.confに ---------------------- AddHandler cgi-script .cgi .rb ---------------------- と追加しました(このため.htaccessは作成しなくていいと思う)。 コマンドラインにて[which ruby][whereis ruby]を使い、[/usr/bin/ruby]にrubyがあることはわかるのですが、エラーが出てしまいます。 [test.rb] ---------------------- #!/usr/bin/ruby print "Content-type: text/html\n\n" print "test" ---------------------- 上記プログラムには755のパーミッションを与えています。 上記のフォルダにはCGI実行権が与えられています。 上記のフォルダではCGIはしっかりと動きます。 上記のプログラムはコマンドライン上[ruby test.rb]では動きます。 また、他のサイトもいろいろ調べましたが #!/usr/bin/env ruby #!ruby #!/usr/local/bin/ruby どのいパスでもエラーがでました。 解決方法を教えてください。 サーバ ---------------------- CentOS 5.4Final Apache 2.2.3 Ruby 1.8.5 ----------------------

  • Rubyでの比較 (Float)

    Ruby初心者です。 簡単な比較を行いたいんですが、エラーが出てしまいます。 ファイルに ex. ruby_test.rb 0 12.3243 32 112.233 0.33123 とあり、このファイルを読み込んで比較しようとしています。 以下のコードで比較しようとしました。 ----------------------------------------------------------- fp = open("c:/ruby_test.txt") aaa = Array.new while line2 = fp.gets line2.chomp! bbb = line2.split(/\t/) aaa << bbb[1] if ( bbb[2] < 1.301029996 ) then       ※11行目 print "aaa\n" elsif ( bbb[2] < 8.164943898 ) then print "bbb\n" elsif ( bbb[2] >= 8.164943898 ) then print "ccc\n" end end fp.close -------------------------------------------- 実行すると ( ※ **** はファイル名 ) C:/ruby/*******.rb:11:in'<': comparison of String with Float failed (Argument Error) というエラーが出ます。 比較する  bbb[2] < 1.301029996  を bbb[2] < "1.301029996" すれば 動きますが、これでは文字列としての比較になってしまいますよね?? Floatは数字として比較するにはどうしたらよいのでしょうか? どなたか宜しくお願いします。

  • ruby 1.9.3のrequireについて

    はじめまして。 私は今初めてrubyの勉強をしています。 使用している参考書はたのしいruby第3です。 ruby 1.9.3-P1.9.4でのrequireについて 今回質問させていただく内容としては requireを使用し外部ファイルを読み込もうとするとエラーになってしま.います。 同じディレクトリにファイルを置いています。 ディレクトリ構造として c:\workspaceの中にscopetest.rbとsub.rbをおいております。 scopetest.rb $x = 0 x = 0 require "sub" p $x p x sub.rb $x = 1 x = 1 実行コマンド ruby scopetestr.rb エラー C:/Ruby193/lib/ruby/site_ruby/1.9.1/rubygems/custom_require.rb:36:in `require': cannot load such file -- sub (LoadError) from C:/Ruby193/lib/ruby/site_ruby/1.9.1/rubygems/custom_require.rb:36:i n `require' from scopetest.rb:4:in `<main>' 参考書と同じにやっているのですがエラーがでてしまいます。 初歩的な質問かもしれませんがよろしくおねがいいたします。

    • ベストアンサー
    • Ruby
  • Ruby vim 実行の仕方

    Rubyをvimで書いたので、実行しようとしたのですが、実行できないです。何がダメなのでしょうか? 手順としては、 vimで puts("Hello World!")と書きました。 w hello_ruby.rbと書いて保存しました。 コマンドプロンプトを開いて、hello_ruby.rbと入れて、Enterを押したのですが、 ’hello_ruby.rb’は、内部コマンドまたは外部コマンド、操作可能なプログラムまたはバッチ ファイルとして認識されていません。 と出ます。 コマンドプロンプトで、ruby -v と入れると、Rubyのバージョンは出てきます。 何がいけないのでしょうか?修正の仕方を教えてください。 詳しい方いらっしゃいましたら、よろしくお願い致します。

    • ベストアンサー
    • Ruby
  • Ruby の実行について

    Ruby初心者です。 メモ帳で puts "hello world"と打ち、名前をsample.rbにし、c:\Users\rbというファイルに保存しました。次にコマンドプロンプトで c:\Users\rb>ruby sample.rb と入力したんですが、'ruby'は、内部コマンドまたは外部コマンド、操作可能なプログラムまたはバッチ ファイルとして認識されていません。といわれました。 どうすればいいのですか? 本を見てもネット上のサイトをみても >ruby ●●.rb なんです。

    • ベストアンサー
    • Ruby
  • Ruby

    #!/usr/local/bin/ruby class Foo def []=(x,y) print "Hello,",x,y,"!\n" end end bar = Foo.new bar["wor"] = "ld" 上記実行結果は Hello world! になるのですが、これが理解できません。 上手く説明してくれませんか?

専門家に質問してみよう