Ruby 初心者スレッド Part 67 (724レス)
1-

12
(1): (ワッチョイ 2e63-YHUb) 2021/01/02(土)17:25 ID:z1ZKe1zV0(1) AAS
rubyで自分用のCUIアプリを作成しています。質問させて下さい。

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

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

私の作っているソフトウェアの規模は個人用なので小規模で2万行程度です。ただし、最終的にはこの倍はいきそうです。
省2
13: (u_・y) (アウアウウー Saa5-Jh9r) 2021/01/04(月)11:01 ID:oZidFLopa(1/2) AAS
俺様なら作法とか無視して最低3フォルダは作るけど
0、bin
1、そのアプリのみで使う事が想定されてるファイル群
2、他のアプリでもそのまま使える完全に分離してるmodule/class群

どうしても一般論でやるってところに拘るならrubyコミッターのソースコード探して見てくれば良い
標準があるとすればそれ
14: (u_・y) (アウアウウー Saa5-Jh9r) 2021/01/04(月)11:24 ID:oZidFLopa(2/2) AAS
AA省
15: (ワッチョイ 8201-TJkF) 2021/01/04(月)13:08 ID:VbZo6FxW0(1) AAS
>>12
gemの構成に従うのが一般的
$ bundle gem <project_name> でscaffoldしてくれる

もう少し詳しく知りたければオライリーから出てる
「Build Awesome Command-Line Application in Ruby 2」の9章
16: (ワッチョイ 2e2c-qBFf) 2021/01/04(月)13:22 ID:yec7Hk1C0(1) AAS
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
(1): (u_・y) (アウアウウー Saa5-Jh9r) 2021/01/04(月)20:10 ID:0ES7puYLa(1) AAS
問 1
以下のソースコードを実行したときに最終的に表示される文字列をこたえよ
※ まずは答えを見ずに考えてね!

def b x
x + " rails"
end
def f(x=<<-TEXT) return p b x ; python最高(*'▽')
on #{print "ruby "}
TEXT
end
省2
18: (ワッチョイ 2e63-YHUb) 2021/01/04(月)21:25 ID:yms/N9cK0(1) AAS
ありがとうございます。
いただいた回答を確認させていただきましたが、bundle2.7 gem NAMEで出てくる内容が、私の知りたい回答に近いようです。
参考にさせていただきます。
19
(3): (ワッチョイ 468c-1BNf) 2021/01/05(火)19:10 ID:khtEPZ8Z0(1) AAS
CSVファイルの読み込みで下みたいに変換することってできる?
"0123",1
=> ["0123", 1]
20
(2): (オッペケ Srf1-hZl1) 2021/01/05(火)19:30 ID:MfDAyFl4r(1) AAS
>>19
CSV.parse '"0123",1', quote_char: ?' #=> [["\"0123\"", "1"]]
21
(1): (ワッチョイ 2e2c-qBFf) 2021/01/06(水)00:17 ID:2hpPqzu40(1/3) AAS
CSV では文字列・数値とか、各列の型を指定できなかったっけ?

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

class Test
def initialize
@fiber = Fiber.new {test}
end
def test
p "これがファイバーのブロックで与えた処理だ"
Fiber.yield
p "理解したかな???"
省16
23
(2): (オッペケ Srf1-hZl1) 2021/01/06(水)05:27 ID:jWwxeiIUr(1/2) AAS
>>20
>>19を読み間違えていたので訂正

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

# => [["0123, 1]]
24: (ワッチョイ 2e2c-qBFf) 2021/01/06(水)06:10 ID:2hpPqzu40(2/3) AAS
Fiber は、coroutine みたいなものか

初心者がやるものじゃない。
10年以上やってから、やるもの
25: (ワッチョイ 2e2c-qBFf) 2021/01/06(水)06:33 ID:2hpPqzu40(3/3) AAS
f = Fiber.new do
n = 0

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

n += 1
end
end

2.times do |idx|
省14
26: (ブーイモ MMb6-zmFY) 2021/01/06(水)11:25 ID:HlI/jGZrM(1) AAS
>>22
そのコードはfiber_testメソッドのFiber_yieldしてるところで
can't yield from root fiberのエラーになるよ

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

なお初心者がFiberを使ったコードを書いても普通にloopで書いたほうがいいもんを煩雑にさせるだけだから今覚えてもすぐ明日から使うぞーってなる機能ではない
28
(1): (ワッチョイ 42bb-zSX4) 2021/01/06(水)14:48 ID:eEkuR0nA0(1/2) AAS
Ruby使った事ない勢です
知人から恐らくruby(のgem ocra)でコンパイルされたexeファイルを修正してほしいと頼まれたのですが
これ逆アセンブルする方法無いですか?
29
(1): (ワッチョイ 8201-TJkF) 2021/01/06(水)15:07 ID:twxSQNJZ0(1/2) AAS
>>28
解凍すればいいだけでは?
30
(1): (スフッ Sd62-BgNG) 2021/01/06(水)18:53 ID:tXuutWqgd(1) AAS
>>29
無知で申し訳ないです
サクラエディタでexeとか怪しいtmp開いてみたけど見られないんですよね
解凍というのはどう言うことでしょうか?ocraにそういったコマンドがあるのでしょうか?
それとも実はzipでコンパイルされてるとか?
31
(1): (ワッチョイ 8201-TJkF) 2021/01/06(水)22:30 ID:twxSQNJZ0(2/2) AAS
>>30
自己解凍形式
実行すれば一時ディレクトリにソースも解凍されてる
1-
あと 693 レスあります
スレ情報 赤レス抽出 画像レス抽出 歴の未読スレ AAサムネイル

ぬこの手 ぬこTOP 1.351s*