Ruby 初心者スレッド Part 67

1デフォルトの名無しさん (ワッチョイ b72c-yePO)
垢版 |
2020/12/25(金) 04:24:27.68ID:aa9Khe9z0
プログラミング言語 Rubyについての、初心者向けスレです。質問・要望・雑談などをどうぞ

質問するときは、OSやRubyのバージョン、エラーメッセージを書いて下さい。
Ruby on Rails については、WEBプログラミング板で

前スレ
Ruby 初心者スレッド Part 66
https://mevius.5ch.net/test/read.cgi/tech/1578068134/

るりまサーチ (リファレンス検索)
http://rurema.clear-code.com/

Rubyist Magazine - るびま
http://jp.rubyist.net/magazine/

逆引きRuby
http://www.namaraii.com/rubytips/

Ruby コミュニティ公式
https://www.ruby-lang.org/
VIPQ2_EXTDAT: checked:vvvvv:1000:512:: EXT was configured
2デフォルトの名無しさん (ワッチョイ 572c-yePO)
垢版 |
2020/12/25(金) 04:26:07.55ID:aa9Khe9z0
Rubyの絵本、2008
たのしいRuby 第6版、2019
3ステップでしっかり学ぶ Ruby入門、2018
かんたん Ruby (プログラミングの教科書)、2018

プロを目指す人のためのRuby入門、2017

改訂2版 パーフェクトRuby、2017

改訂2版 Ruby逆引きハンドブック、2018 (中級者向け)

Effective Ruby、2015 (中級者向け)

メタプログラミング Ruby 第2版、2015 (中級者向け)

リファクタリング:Rubyエディション(復刻版)、2020(中級者向け)

RubyでつくるRuby ゼロから学びなおすプログラミング言語入門、2017 (中級者向け)

Rubyのしくみ、2014 (中級者向け)

改訂4版 基礎 Ruby on Rails、2018

パーフェクト Ruby on Rails 【増補改訂版】、2020

Rubyによるクローラー開発技法 巡回・解析機能の実装と21の運用例、2014

オブジェクト指向設計実践ガイド Rubyでわかる 進化しつづける柔軟なアプリケーションの育て方、2016

Seleniumデザインパターン&ベストプラクティス、2015

Webで使えるmrubyシステムプログラミング入門、2020
3デフォルトの名無しさん (ワッチョイ 572c-yePO)
垢版 |
2020/12/25(金) 04:27:50.07ID:aa9Khe9z0
開発環境

RDE
Windows用IDE
https://ja.osdn.net/projects/sfnet_rubyde/
以下、RDEの使用説明
http://rubyde.sourceforge.net/hiki/ja/FrontPage.html

RDEのデバッグ機能を使う場合、設定においてデバッグオプションを「-r debug2」から「-r debug」と書き換えて、
ruby付属のdebug.rbを使うようにすること。
RDE付属のdebug2.rbは、ruby1.8用のスクリプトのため、現在のrubyのversionには使えません

サクラエディタ
Windows用高機能エディタ
https://ja.osdn.net/projects/sfnet_sakura-editor/
以下、ruby用設定の説明
http://supportdoc.net/support-sakura/ruby.html

Emacs
GNUの高機能エディタ

Vim
Emacsと同じぐらい有名なCUIベースのエディタ

VSCode
マルチOSに対応したマイクロソフト社製のソースコードエディタ
https://code.visualstudio.com/download
2020/12/25(金) 19:37:36.98ID:HoUTdWdQp
祝 ruby3.0.0
2020/12/25(金) 19:42:54.83ID:cyV6b5qO0
めでたくもなんともない
ムダに歳くったロートル
6デフォルトの名無しさん (ワッチョイ 0bab-JtRj)
垢版 |
2020/12/25(金) 22:20:13.76ID:DVzhLIY40
形態素ゲイムRuby松本まじコスロ
by猪瀬色彩空間
2020/12/25(金) 22:53:56.79ID:gC1vp0cV0
速度3倍ってマジ?
2020/12/26(土) 05:22:31.21ID:MLavBbcpr
>>1
3.0おめでとう
2020/12/27(日) 22:23:18.64ID:3h7fei6ma
$ gem install clipboard
$ irb

irb> require 'clipboard'
=> true
irb> puts Clipboard.paste
朝鮮・韓国兵の扱い方(取り扱いマニュアル) 旧日本陸軍・米軍・旧ソ連共産党 | memo
=> nil
2020/12/28(月) 21:08:07.24ID:JL6YsW3y0
Rubyってトップレベル関数はprivateにできないの?
やっぱり、Pythonみたいに__ってしてあげるしかないのかな
2020/12/29(火) 11:46:48.14ID:NZwVboWN0
2.7で作ったアプリを3.0で動かしてみたらエラーでした
2021/01/02(土) 17:25:59.70ID:z1ZKe1zV0
rubyで自分用のCUIアプリを作成しています。質問させて下さい。

rubyではクラスごとにファイルを分けるべきでしょうか?
名前空間ごとにディレクトリを作成すべきでしょうか?

また、とりあえず他のソースコードを何個か見て、以下のディレクトリを作成しています。
bin/
lib/
binの中はコマンドライン解析用のソースコードのみで、他はlibの中に全部入っています。
この配置は一般的でしょうか?
また、テスト用のソースコードやデータはどのように配置すべきでしょうか?

私の作っているソフトウェアの規模は個人用なので小規模で2万行程度です。ただし、最終的にはこの倍はいきそうです。
しかしながら、勉強も兼ねて、なるべくrubyのお作法に従うようにしたいです。

よろしくお願いいたします。
13(u_・y) (アウアウウー Saa5-Jh9r)
垢版 |
2021/01/04(月) 11:01:26.70ID:oZidFLopa
俺様なら作法とか無視して最低3フォルダは作るけど
0、bin
1、そのアプリのみで使う事が想定されてるファイル群
2、他のアプリでもそのまま使える完全に分離してるmodule/class群

どうしても一般論でやるってところに拘るならrubyコミッターのソースコード探して見てくれば良い
標準があるとすればそれ
2021/01/04(月) 11:24:34.37ID:oZidFLopa
(u_・y) 質問です。世の中を自分の好きなように動かしたいのですが。
(u_・y) "rubyを使う"という条件に限定した場合、何をするのが最適解でしょうか?
2021/01/04(月) 13:08:51.30ID:VbZo6FxW0
>>12
gemの構成に従うのが一般的
$ bundle gem <project_name> でscaffoldしてくれる

もう少し詳しく知りたければオライリーから出てる
「Build Awesome Command-Line Application in Ruby 2」の9章
2021/01/04(月) 13:22:27.53ID:yec7Hk1C0
Rails のプロジェクト構成に従えば?

プロジェクトルート直下のフォルダは、
ruby -e 'puts Dir.glob( "*" ).select{ |file| File.directory? file }.sort.join( ", " )'

app, bin, config, db, lib, log, node_modules, public, storage, test, tmp, vendor
17(u_・y) (アウアウウー Saa5-Jh9r)
垢版 |
2021/01/04(月) 20:10:47.67ID:0ES7puYLa
問 1
以下のソースコードを実行したときに最終的に表示される文字列をこたえよ
※ まずは答えを見ずに考えてね!

def b x
x + " rails"
end
def f(x=<<-TEXT) return p b x ; python最高(*'▽')
on #{print "ruby "}
TEXT
end
f

答え: https://ideone.com/G9U1Ab
2021/01/04(月) 21:25:31.68ID:yms/N9cK0
ありがとうございます。
いただいた回答を確認させていただきましたが、bundle2.7 gem NAMEで出てくる内容が、私の知りたい回答に近いようです。
参考にさせていただきます。
2021/01/05(火) 19:10:35.24ID:khtEPZ8Z0
CSVファイルの読み込みで下みたいに変換することってできる?
"0123",1
=> ["0123", 1]
2021/01/05(火) 19:30:04.21ID:MfDAyFl4r
>>19
CSV.parse '"0123",1', quote_char: ?' #=> [["\"0123\"", "1"]]
2021/01/06(水) 00:17:02.38ID:2hpPqzu40
CSV では文字列・数値とか、各列の型を指定できなかったっけ?

各列の変換器
22デフォルトの名無しさん (ワッチョイ 8205-I5PR)
垢版 |
2021/01/06(水) 02:45:29.91ID:X+T/DkCZ0
プログラミング自体初心者です
ファイバーを全く理解していなかったので勉強してみているのですが

class Test
def initialize
@fiber = Fiber.new {test}
end
def test
p "これがファイバーのブロックで与えた処理だ"
Fiber.yield
p "理解したかな???"
end
def fiber_test(count = 60)
@fiber.resume
p "帰ってきたぞ"
@fiber.resume
p "再び帰ってきたぞ"
count.times do {Fiber.yield}
end
end

このコードを組んで別の場所でTest.new.fiber_testとインスタンスを作成して呼び出してみたのですが
@fiber.resumeでtestメソッドへ移動し
Fiber_yieldでfiber_testメソッドへ戻ることはわかったのですが
testメソッドで@fiber.resumeを実行すると親子関係がおかしくなるからかFiberErrorを起こすのに対し
fiber_testメソッド側でFiber_yieldを実行すると一瞬画面が止まるだけでコンソールにも何も表示されません
これは何が起きているのでしょうか?
引数のcountを増やすほど長く画面が固まります
2021/01/06(水) 05:27:15.07ID:jWwxeiIUr
>>20
>>19を読み間違えていたので訂正

CSV.parse '"0123",1', converters: ->(f, i){i.index.zero? ? f : f.to_i}

# => [["0123, 1]]
2021/01/06(水) 06:10:07.47ID:2hpPqzu40
Fiber は、coroutine みたいなものか

初心者がやるものじゃない。
10年以上やってから、やるもの
2021/01/06(水) 06:33:24.80ID:2hpPqzu40
f = Fiber.new do
n = 0

loop do
puts "子の前 : #{ n }"
Fiber.yield( n ) # 親へ
puts "子の後 : #{ n }"

n += 1
end
end

2.times do |idx|
puts "親の前 : #{ idx }"
puts "親の値 : #{ f.resume }" # 子へ
puts "親の後 : #{ idx }"
end

出力
親の前 : 0
子の前 : 0
親の値 : 0
親の後 : 0

親の前 : 1
子の後 : 0 # 要注意!
子の前 : 1
親の値 : 1
親の後 : 1
2021/01/06(水) 11:25:26.71ID:HlI/jGZrM
>>22
そのコードはfiber_testメソッドのFiber_yieldしてるところで
can't yield from root fiberのエラーになるよ

エラーにならないならrubyのバージョンと再現可能なコードを書いて
2021/01/06(水) 12:45:06.84ID:I0SDZM+6a
Fiber.yield と @var.resume で処理の投げあいをしてるだけ
で、resumeは変数のメソッドだから変数が参照できればどこからでも呼べるが、
Fiber.yieldっていうのは、Fiber.new{ ここ }の中でしか呼び出せない

なお初心者がFiberを使ったコードを書いても普通にloopで書いたほうがいいもんを煩雑にさせるだけだから今覚えてもすぐ明日から使うぞーってなる機能ではない
28デフォルトの名無しさん (ワッチョイ 42bb-zSX4)
垢版 |
2021/01/06(水) 14:48:29.93ID:eEkuR0nA0
Ruby使った事ない勢です
知人から恐らくruby(のgem ocra)でコンパイルされたexeファイルを修正してほしいと頼まれたのですが
これ逆アセンブルする方法無いですか?
2021/01/06(水) 15:07:09.07ID:twxSQNJZ0
>>28
解凍すればいいだけでは?
30デフォルトの名無しさん (スフッ Sd62-BgNG)
垢版 |
2021/01/06(水) 18:53:39.35ID:tXuutWqgd
>>29
無知で申し訳ないです
サクラエディタでexeとか怪しいtmp開いてみたけど見られないんですよね
解凍というのはどう言うことでしょうか?ocraにそういったコマンドがあるのでしょうか?
それとも実はzipでコンパイルされてるとか?
レスを投稿する

5ちゃんねるの広告が気に入らない場合は、こちらをクリックしてください。

ニューススポーツなんでも実況