Ruby
- Ruby 文法 ブロックの中で メソッドを呼ぶ
class Hoge def val 'aaa' end def piyo yield end end h=Hoge.new h.piyo do p h.val #<ーここの話 end 上の様に書く時、ブロックの中で、そのクラスのメソッドを呼ぶ時、上の例だと h.val と書いてますが、これself.valなどと書きたいのですがERRになってしまいます。 h.と書くのがとても嫌なのですが、なにか良い書き方あるのでしょうか?
- 計算の途中経過を表示
以下のようなプログラムで、素数をカウントダウンする事が出来るのですが、このくらいのサイズだとどうしても次の素数が表示されるまで時間がかかります。 そこで以下のものを修正して、今どの数に取りかかっていて、どの約数(i)で割っているのか常に画面に表示されるようにしたいのです。値が画面で目まぐるしく変わってもかまいません。是非助けてください。 def prime(val) maxv = Math::sqrt(val).truncate (2..maxv).each do |i| return false if val % i == 0 end return true end x = 10**17+1 until x<10**16 until prime(x) x=x-2 end puts x x=x-2 end puts x
- ベストアンサー
- Ruby
- gbRubyTuesday
- 回答数1
- Ruby 指定時間事にループ処理のコードが不安です
プログラム暦数日のまだ勉強している学生です。 動作は出来てますが、本当にこれで良いのか不安ですのでアドバイス等あれば宜しくお願いします。 一定時間事(1分)にサイト内データーを巡回するコードを書いてみたのですが、これで宜しいでしょうか? ######################################### while true #更新の確認 puts doc.xpath("//span[@class='topdate']").text #取得 puts doc.xpath('//table[@class="xxxx"]').text sleep 60 end #########################################
- ベストアンサー
- Ruby
- chibi10sai
- 回答数2
- SqaleサーバーへRudyプログラムの接続。
はじめまして プログラム暦2日目の学生です。 初歩過ぎて笑われるかと思いますが教えて頂けるとうれしいです。 宜しくお願いします。 Rudyを覚えたくて「たのしいRudy」という書籍を購入したりwebを見たりしてローカル上でどうにかサンプルプログラムが動くようになりました。 サンプルプログラムと言っても一行しかない「puts 'hello world'」なのですがw そしてそのコードをサーバーでテストしようと思いまして既に環境が整ってると言う「Sqale」と言うサーバーにアップロードしたのですが503errがでてしまって動きません。 アップロードファイルは下の1ファイルだけです。 ■test.rb puts 'hello world' ローカルでは動くのにサーバーにアップロードするとなぜ動かないのでしょうか? Sqaleのヘルプにも接続に関して該当するような文章が無かったので?詳しく教えて頂きたいので宜しくお願いします。 ・ローカル環境 Rudy2.0 notepado++ ・サーバー Sqale https://sqale.jp/
- 締切済み
- Ruby
- chibi10sai
- 回答数3
- 巨大な整数の表示
マニュアルによると、puts 2**1000 で、300-400桁ほどの大きい整数が全表示されるはずです。しかし0としか表示されません。puts 2**100でも同じ事です。puts 2**50で、ようやく全表示されます。どんな巨大な数でも表示されるようにしたいのです。Rubyではそれが可能と聞いてます。ちなみに、Ruby 1.8.7を使用しています。
- ベストアンサー
- Ruby
- gbRubyTuesday
- 回答数1
- Rubyの問題について質問です。
Rubyの資格試験の勉強をしています。 分からない部分がありまして質問させていただきます。 class Employee attr_reader :id attr_accessor :name def initialize id , name @id = id @name = name end def to_s return "#{@id}:#{@name}" end def <=> other return self.id <=> other.id end employees = [ ] employees <<Employee.new("3","Tanaka") employees<<Employee.new("1","Suzuki") employees<<Employee.new("2","Sato") employee.sort! (質問) 「return self.id <=> other.id」この部分のselfとotherが何をさしているのか分かりません。3つめでインスタント化している「employees<<Employee.new("2","Sato")」のは、selfに入りそれまでに入れた値はotherに入っているのでしょうか? ご回答よろしくお願いします。
- ベストアンサー
- Ruby
- tanakayasufumi
- 回答数4
- Ruby on rails3 プロジェクト
$ rails new ○○ で新しいプロジェクトを作ろうとすると、下記のようなメッセージがでます。原因がわかりませんので分かりましたら教えてくださいよろしくお願いします。 Can't initialize a new Rails application within the directory of another, please change to a non-Rails directory first. Type 'rails' for help.
- Rubyのirbで計算を途中でやめることは可能?
(OS: Mac OS X 10.9.1, Rubyのバージョン: 2.0.0 です) Ruby の irb を使用していて, 例えば >> while true >> puts "infinite loop" >> end などと打ち込んでしまって無限ループが起きたときや, その他非常に時間がかかりそうな計算を行っているときに, これを中断する手段というのはあるのでしょうか? (control + Z をすれば irb 自体を中断することはできるようですが, irb自体は中断せずに, 現在行っている処理のみを停止したいということです.)
- Rails とSocial Stream
Windows7で開発ツールのAptanaを使ってRuby on railsでSNSサイトを作ろうとしています。 そこで海外のフレームワークの Social Stream http://social-stream.dit.upm.es/started/ を使ういたいのですが、 コマンド上で、 gem 'social_stream' をやってもこのような表示がでます。 ERROR: While executing gem ... (Gem::CommandLineError) Unknown command social_stream どのように対処すればよいのか分からないので、分かりましたらよろしくお願いします。
- 【Ruby初心者】簡単なプログラムが実行しない
教材でRubyを勉強中なのですが、以下のプログラムが実行されず爆死しています。 --- puts("整数を入力してね") number = gets.to_i if number > 0 then puts("正の数です!”) end --- 文字コードは、UTF-8で指定、OSはMacです。CotEditorを使用しています。 数字/アルファベットだけのプログラムは正常に実行されるのですが、 文字入りのプログラムがうまく実行されません。 プレビュー見ると文字化けしているので(添付画像参照)、 文字入力にバグが起因していると思われますがお手上げ状態です。
- ベストアンサー
- Ruby
- tmyasudayo
- 回答数1
- Ruby2.0 String で ERR
以下のようなコードをruby1.8系で実行してもOKなのですが、 s=String.new("\0"*4) s[0]=8 puts s.unpack("H*") ruby2.0で実行すると、 `[]=': no implicit conversion of Fixnum into String (TypeError) とERRになってしまいます。 ruby2.0ではどうかいたら宜しいでしょうか?
- Ruby on Railsの環境構築
どうにも困り果てております。 少し面倒な質問となってしまいますが、お答え頂けると助かります。 現在、Railsを利用したWEBアプリケーションを作成しようと、Railsの勉強をしているのですが、環境構築の段階でつまづいてしまいました。 具体的には、TerminalでRails sコマンド実行しても、WEBrickが起動せず、 /opt/local/lib/ruby/gems/1.8/gems/bundler-1.0.22/lib/bundler/rubygems_integration.rb:183:in `stub_source_index170': uninitialized constant Gem::SourceIndex (NameError) のようなメッセージが表示されてしまいます。 Mac OS X Lion 10.7.5を使用しております。 また、Terminalで -vコマンドを利用して確かめた所、 ruby 1.8.7 (2012-02-08 patchlevel 358) [i686-darwin11] gem 2.1.11 MacPorts 2.2.1 Rails 3.2.2 Xcode 4.2.1 が確認出来ました。 Terminalを使っての作業が初めてであったため、うまく説明出来ていない部分もあるとは思いますが、ご指導頂けると幸いです。 よろしくお願い致します。
- Railsのインストールについて
サーバーにrailsをインストールしようとすると下記のようなエラーがでるのですが よく分かりませんでした。教えてください。 $ gem install rails ERROR: While executing gem ... (OpenSSL::SSL::SSLError) SSL_write:: bad write retry
- rubyでは比較演算子もメソッドとして書き換えが可
rubyでは<や>などの比較演算子もメソッドと分類されるのでオーバーライドが可能と認識しております。具体的にどのようにコーディングしたら良いのでしょうか? 例えば、配列に数値が格納されているとします。 array=[3,5,4,2,1] この配列をソートした場合に比較が何回行われたかをカウントしたいです。 p array.sort >や<が再定義可能なら、比較演算子が呼ばれる度にカウンターアップするなどと言う事はできるような気がするのですが、どうコーディングしてよいか解りません。 rubyのマニュアルも読んだし、それなりに検索でも頑張ったのですが、煮詰まってしまいました。 ご指導のほど、よろしくお願いいたします。
- Beaglebone評価ボードでrubyは使える?
Beagleboneという評価ボードを買いました。 Beagle Bone Black(ビーグルボーンブラック) [ただのメモ帳] http://wiki.limemo.net/dokuwiki/beaglebone/start このボードにUSBキーボード、マウス、HDMIでディスプレイにつなげばLinuxを操作できるようになっています。 例えば、このLinux上でgccとかrubyでプログラムを作成してコンパイルとかプログラムを動作させるとかもできますでしょうか? 個人的にはrubyというのをやってみたいと思っているのですが、このLinuxでrubyが使える環境になっているのかを調べる方法とかご教授頂きますよう、お願い致します。
- Ruby初心者です。
以下の練習問題をやっているのですが、どうもうまくいきません。 (1)担当名が"end"になる迄、担当名と売上を入力する。 (2)売上合計を求める。 (3)各担当の売上が売上合計の何%になるかの比率の計算を行う。 (4)担当名、売上、比率を表示する。 どこがいけないのがご教授頂けますでしょうか。 よろしくお願い致します。 *********************************** #! ruby -E Windows-31J:utf-8 # coding: utf-8 kensu = 0 uriage = 0 goukei = 0 uriage_t = [20] tanto = [10] tanto = [20][10] puts("担当名がendで終了") print(kensu = kensu + 1, "人目の担当名は") tanto = $stdin.gets.chomp! tanto.gsub!("\n", "") print("売上") uriage = $stdin.gets.chomp!.to_i while tanto != "end" kensu = kensu goukei = goukei + uriage uriage_t = uriage tanto_t = tanto print(kensu = kensu + 1, "人目の担当名は") tanto = $stdin.gets.chomp! tanto.gsub!("\n", "") if tanto != "end" print("売上") uriage = $stdin.gets.chomp!.to_i end end kensu = kensu + 1 goukei = goukei + uriage uriage_t = uriage tanto_t = tanto, "合計" puts "________________________________________" puts " 担当 売上 比率 " puts "________________________________________" for i in kensu kensu += i ritu = uriage * 100 / goukei puts "担当名は#{tanto} 売上は#{uriage_t}円 比率は#{ritu}%" end
- 締切済み
- Ruby
- Fukusukedesu
- 回答数3
- Rubyのルンゲクッタ法がうまくいきません
Rubyでルンゲクッタ法でy=exp(x**2)と比較しようという問題で、下のようなプログラムを組むとyの値がかなり大きくなってしまいます。どこが間違っているのでしょうか。教えてください。 #! ruby -Ks #ルンゲックッタ def df(a,b) z=2*a*b return z end n=10 x=Array.new(n) y=Array.new(n) x[0]=0.0 y[0]=1.0 h=1.0/n #任意で変更 fw=File.open("output2.txt","w") for i in 0..n k1=df(x[i],y[i])*h k2=df(x[i]+h/2,y[i]+k1/2)*h k3=df(x[i]+h/2,y[i]+k2/2)*h k4=df(x[i]+h,y[i]+k3) k=(k1+2*k2+2*k3+k4)/6 x[i+1]=x[i]+h y[i+1]=y[i]+k fw.print x[i]," ",y[i]," ","\n" end fw.close()
- Ruby1.8.7 ファイルアップロードCGI
CGI を使ったファイルのアップローダを作りたくて、今日初めて Ruby を触っていますが、質問があります。 アップロードするファイル本体以外の情報を name="version" で受け取って、保存するディレクトリを分けるようにしています。書きかけのコードは以下の通りです。(タブによるインデントが入らなかったので、アンダースコアで表現しています) ----------ここからソースコード---------- #!/usr/local/bin/ruby require "cgi" begin __print "Content-Type: text/plain\n\n" __cgi = CGI.new __print "Ruby version is " __print RUBY_VERSION,"\n" __print "filename = " __print cgi['upload_file'].original_filename, "\n" __file = cgi.params['version'][0] __if file.class == StringIO then ____print "File is StringIO Class.\n" ____print "version = " ____print cgi["version"].string, "\n" ____if File.exist? cgi["version"].string then ______print "このバージョンのディレクトリは既に存在しているため、ディレクトリは作成されませんでした。" ____else ______print "ディレクトリが存在しないので作成します。" ______Dir::mkdir(cgi["version"].string, 0755) ____end ____OUTPUT_DIR = (cgi["version"].string + "/") ____open(OUTPUT_DIR + cgi['upload_file'].original_filename, "w") {|fh| ____fh.binmode ____fh.write cgi['upload_file'].read ____} __else ____print "File is TempFile Class.\n" ____#ここから先が書きかけで分からない部分です。 __end rescue => e __print "Error!" + e end ----------ここまでソースコード---------- Ruby の CGI モジュールを使っていますが、受け取ったファイルが 10240 バイト未満だと StringIOオブジェクト、10240 バイト以上だと TempFile オブジェクトになるという規則があるそうで、オブジェクトの種類によって分岐させています。 StringIO オブジェクト(10240バイト未満の送信)の場合はこれで想定通りに動いたのですが、TempFile オブジェクトと判別された場合に、 version のテキストフィールドの文字列を print により表示(出力)したりディレクトリ名にしたりする方法が分かりません。また、ファイル本体 upload_file は TempFile オブジェクトの場合でも同じ記述でファイルに保存できますでしょうか? サーバにインストールされている Ruby のバージョンは 1.8.7 です。
- ruby 文字削除 位置指定の方法について
a = "aaaacccaaacccaaaaaaaaaaaaaaarubyaaaaa" の場合、ruby以降(aaaaaa)を最後まで削除したい場合、 どのように記述したら良いですか? 実際の使用用途は、nokogiriでスクレーピングした、長いhtmlを整形するために使用したいです。 一致した文章(上記の場合、ccc)はgsubで削除できたのですが、指定した文字(上記の場合はruby)に一致した文字以降全てを削除という記載方法がわかりません。どなたか教えて下さいませ。 ■環境 linux ruby 1.9.3
- 締切済み
- Ruby
- mamokkuman
- 回答数2
- Visualurubyのラジオボタンについて
あるラジオボタンを選択(クリック)したときに、あるグループボックスを非表示にしたいのですが module Frm_form1 ... def radioBtn1_clicked @groupBox1.visible = false end というプログラムを書いたのですが、うまくいきません。(エラーも出ないです) もともとできないのですか?