X



Ruby 初心者スレッド Part 66
■ このスレッドは過去ログ倉庫に格納されています
0001デフォルトの名無しさん (ワッチョイ 2a2c-RM0q)
垢版 |
2020/01/04(土) 01:15:34.30ID:X7t3Qsuc0
プログラミング言語 Rubyについての、初心者向けスレです。質問・要望・雑談などをどうぞ

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

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

るりまサーチ (リファレンス検索)
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
0311デフォルトの名無しさん (ワッチョイ 4b2c-AHN4)
垢版 |
2020/04/03(金) 12:39:37.64ID:tv+k2Xei0
xy4_02.txt → xy4_002.txt

みたいに、ファイル名末尾の数字部分を、3桁0埋めにする処理で、
文字列を左右反転して、後ろから処理しているのですが、

02 反転→ 20 (0埋め)→ 200 反転→ 002

format・sprintf で、- 左詰め、0埋めにしても、0埋めできません!
0埋めは、右詰めでしか使えない!

"%03d" % "20" # "020"
"%-03d" % "20" # "20", 200 にならない!

一方、JavaScript では、両方向で0埋めできますが、
Ruby にも、こういう関数がありますか?

"20".padStart( 3, "0" ) // 020
"20".padEnd( 3, "0" ) // 200
0315311 (ワッチョイ 4b2c-AHN4)
垢版 |
2020/04/03(金) 17:00:52.81ID:tv+k2Xei0
0 で始まる文字列は、8進数と解釈されるのか、08, 09 などでエラーになる!

"%03d" % "07" # OK
"%03d" % "08" # エラー

>>313
ありがとう
0317311 (ワッチョイ 4b2c-AHN4)
垢版 |
2020/04/03(金) 18:14:05.62ID:tv+k2Xei0
先頭から続く、0 は鬼門!
それらを除去したい。よい方法は?

0080 → 80
123 → 123

"" → ""
000 → ""
0319311 (ワッチョイ 4b2c-AHN4)
垢版 |
2020/04/03(金) 18:51:12.37ID:tv+k2Xei0
先頭から続くかぎり、除去するので、これで良いです。
000 → ""

これは、自作するのは難しい。
プログラミングのお題に出してみようか
0321311 (ワッチョイ 4b2c-AHN4)
垢版 |
2020/04/03(金) 19:02:21.43ID:tv+k2Xei0
>>319
修正

0 → ""
000 → ""

やっぱり、これらは空文字列よりも、0 にした方が良さそう

0・000 → 0
0323311 (ワッチョイ 4b2c-AHN4)
垢版 |
2020/04/03(金) 20:00:56.29ID:tv+k2Xei0
プログラミングのお題の方に書き込んだので、このスレから移動してください!
0327デフォルトの名無しさん (ワッチョイ 6352-cvTZ)
垢版 |
2020/04/03(金) 20:55:22.75ID:y4LIlYUL0
>>325
いくつかのスレのタイトルにRuby禁止と書かれているのは、そいつか原因になっている。
活発に活動していて、コテもつけてないが書きっぷりで一目で分かるので目障りきわまりない。
0328291 (ワッチョイ 4b2c-AHN4)
垢版 |
2020/04/05(日) 14:17:50.21ID:eWBrSqct0
Windows 10, WSL, Ubuntu 18.04 で、
rbenv で、Ruby 2.6.5 をインストールして、

PowerShell で、wsl と入力し、
Windows 側のプロジェクトフォルダへ移動してから、

Gemfile に、gem "rails"
と書いて、bundle install と入力すると、

nokogiri 1.10.9 with native extensions のコンパイルに数分掛かったが、
エラーもなく、rails 6.0.2.2 がインストールされた!

でも、SQLite, Node.js などが無いけど
0329デフォルトの名無しさん (ワッチョイ cb68-CuPJ)
垢版 |
2020/04/07(火) 16:20:09.03ID:FvbCZ7uW0
初歩的な質問ですみません

print(”Hello, Ruby.\n")と打つと

デバイス PRN を初期化できません

とエラーが出ます。たのしいRubyの手順通りにしたのですが
こう表示されてしまいます。本にはこのエラーの対処法が載っていないので
困っています。ご教授お願い致します。
0332デフォルトの名無しさん (ワッチョイ 4b2c-AHN4)
垢版 |
2020/04/07(火) 17:19:34.70ID:ivfSfUTD0
>print(”Hello, Ruby.\n")
全角文字、(” を使っちゃいけない!

プログラミングは、半角英数字しか使えないので、すべて半角英数字で入力し直すべし!
print("Hello, Ruby.\n")

特定の条件では、( ) を省略できるので、これでも良い
print "Hello, Ruby.\n"

また、puts なら自動的に改行されるので、最後の改行コード・\n が不要
puts "Hello, Ruby."
0336デフォルトの名無しさん (ワッチョイ 062c-5WFu)
垢版 |
2020/04/08(水) 18:35:17.62ID:fnNjblX40
普通は、ソースコードをファイルに書いて実行する。
ruby script.rb

-e オプションで、1-liner も実行できる。
ruby -e 'puts "a"'

Windows のPowerShell では、%Q("a") とダブルクォーテーションを、%Q( ) で囲まないと動かないこともある
ruby -e 'puts %Q("a")'

VSCode などのエディターを使うのがよい
0340デフォルトの名無しさん (ワッチョイ a201-vZv9)
垢版 |
2020/04/08(水) 20:59:04.51ID:+ufIeUeW0
>>335
「えんぴつなら書けるのにボールペンでは書けません。なぜでしょうか?」って書いてるのと同じ
これ答えられる?

どういう環境で何をやろうとしてるかもわからない
コマンドプロンプトで何ができたのかもわからない
Rubyコマンドで何がどうできないのか、どういうエラーが出てるのかもわからない

プログラミングに限らず人に質問して自分の欲しい答えを引き出すには最低限の質問力が必要
0341デフォルトの名無しさん (ワッチョイ c668-KRXG)
垢版 |
2020/04/08(水) 22:17:10.21ID:bduWTrbF0
すみませんんでした。

Rubyコマンドで

print("Hello, Ruby.\n")

と打つと

デバイス PRN を初期化できません

と表示されます。

コマンドプロンプトで打つと実行できます。irbだと実行できるのは解ったのですがなぜRuby
で実行できないのかがわからなかったんです。ググってみても、「たのしいRuby」を
読んでも記載されていません。
0342デフォルトの名無しさん (ワッチョイ c668-KRXG)
垢版 |
2020/04/08(水) 22:22:22.52ID:bduWTrbF0
環境はWindows10で

Ruby2.7.1です。

Visual Studio codeをインストールして日本語にできました。

エディタ−の使い方を勉強しています。

恥を忍んで質問しました。すみません。
0343デフォルトの名無しさん (ワッチョイ 8252-b+QY)
垢版 |
2020/04/08(水) 22:35:28.81ID:5a3Kp3Hv0
>>341
何をやってどういう結果になったかを、相手に伝わるように正確に書くこと。
おそらくそれができていないから、実行した画面のキャプチャを撮って張り付けること。

>>337みたいなどうでもいい情報を書く前に、どうしたら欲しい回答が相手から得られるかを考えなよ。
0344デフォルトの名無しさん (ワッチョイ a201-vZv9)
垢版 |
2020/04/08(水) 22:37:29.23ID:+ufIeUeW0
>>341
古い版の「たのしいRuby」があったから見てみたけど

print(“Hello, Ruby.¥n”) と書いたhelloruby.rbというファイルを作成して
それをCドライブのsrcフォルダに保存してから
コマンドプロンプトで
>cd c:¥src
>ruby helloruby.rb
とやれって書いてるよ

「デバイス PRN を初期化できません」ってエラーが出るってことは
コマンドプロンプトに直接 print(“Hello, Ruby.¥n”) と打ち込んでるんじゃないの?

irbははinteractive ruby shellの略で対話型で1行ずつ書いたコードを実行する環境の名前で
irbコマンドはその環境を起動するコマンド
rubyコマンドは基本的にrubyのコードを書いたファイルを渡してプログラムを実行するためのコマンド
0347デフォルトの名無しさん (オッペケ Sr5f-LdNq)
垢版 |
2020/04/09(木) 11:07:57.57ID:0FSX5ei3r
パス通ってんなら「puts "Hello, Perverts!"」って内容のhoge.rbをダブルクリックすれば実行されんじゃないの?
ウィンドウズ知らんけど

WSL独り言連投君よ、今こそ君の知識を授けてあげなよ(笑)
0348デフォルトの名無しさん (ワッチョイ 062c-5WFu)
垢版 |
2020/04/09(木) 12:17:41.44ID:pqMoXxyo0
エディタは、VSCode だけを使ってください!
メモ帳などを使うと、BOM の有無・文字コード(UTF-8, CP932(sjis, shift-jis))などで、ややこしい

VSCode の下に、改行コード・文字コードが表示されるので、そこをクリックして変更してください。
Windows なら、UTF-8 で、改行コードはCR/LF です

VSCode では、まず、3つの拡張機能を入れる。
Code Runner(Run Code), Bracket Pair Colorizer, indent-rainbow

Code Runner では、そのスクリプトファイル全体、または選択したコード片を、
右クリックメニューから実行できる

require 'ファイルパス'
などの相対パスが解決できない場合は、パスを探す基点となるフォルダを、
ユーザー・ワークスペース・フォルダの、どれかの設定項目に追加してください

Code-runner: File Directory As Cwd
Whether to use the directory of the file to be executed as the working directory.

まあ、VSCode の詳細は、VSCode のスレで聞いてください
0349348 (ワッチョイ 062c-5WFu)
垢版 |
2020/04/09(木) 12:41:50.31ID:pqMoXxyo0
>>341
エクスプローラーで適当なフォルダを作って、
そのフォルダをVSCode の左のサイドバー上のエクスプローラービューへドラッグ&ドロップすれば、
そこがワークスペース(プロジェクト)フォルダになる

エクスプローラービューの上の「新しいファイル」アイコンを押して、適当なファイルを作る。
例えば、script.rb

そのファイル上に、
print("Hello, Ruby.\n")

と書いて、それを選択して、または、ファイル全体を保存して、
右クリックメニューから、Run Code を起動すると、Code Runner で実行できる

VSCode の使い方は、ヘルプのようこそとか、対話型プレイグラウンドで学べる
0350348 (ワッチョイ 062c-5WFu)
垢版 |
2020/04/09(木) 12:55:29.23ID:pqMoXxyo0
基本的に、サンプルのコード片などは、全てVSCode のCode Runner で実行してください!
Windows のirb は、日本語入力でバグルので、使わない方がよい

基本的に、web 系の言語は、インターネットのLinux サーバーを対象にしているので、
パソコンのWindows などでは、動かないことが多い。
様々なライブラリを作る人が、Windows 用には作らないので

そのため最近では、Windows 10, WSL 上に、Ubuntu 18.04 など、
Linux を入れて使うことが多くなった

VSCode からは、Remote WSL という拡張機能で、Linux側へアクセスできる

初心者の間は、WSL, Linux などは関係ないけど
0351デフォルトの名無しさん (ワッチョイ c668-KRXG)
垢版 |
2020/04/09(木) 17:22:58.21ID:LYdNiQuc0
>>349さん

皆さんありがとうございます。拡張機能でCode Runnerインストールして

ファイル上にprint("Hello, Ruby.\n")と入力、保存して右クリック、これでRuby動く!

と思ったものの、何も起きません…

私のようなバレーボール馬鹿にはプログラムは向いていないんでしょうか…

夕食後、もう一度やりなおしてみます。
0352348 (ワッチョイ 062c-5WFu)
垢版 |
2020/04/09(木) 17:42:02.85ID:pqMoXxyo0
ただし、ファイル名が、script.rb みたいに、
Ruby の拡張子、.rb を付けること

それで、そのファイルをRubyで実行すると、判断されるはず!
0354デフォルトの名無しさん (オッペケ Sr5f-LdNq)
垢版 |
2020/04/09(木) 19:51:56.26ID:ZpQLfNz3r
そもそも初心者がVSCode使う意味が分からん。
Hello, world.レベルならirb使ってちまちまやった方が絶対勉強になる。
日本語入力に不安があるならコマンドプロンプトに「irb --noreadline」って打って起動すれば問題ないだろう。
0355デフォルトの名無しさん (アウアウウー Sabb-juGi)
垢版 |
2020/04/09(木) 20:09:13.08ID:gKTfLKCaa
そもそもRubyの公式エディタはEmacs
VSCodeは邪悪なMSの製品である上に、JavaScript製のAtomを殺したTypeScript製のVSを使うことは動的型に対する静的型付けの勝利を認めることになる
絶対に使ってはならない
0362デフォルトの名無しさん (オッペケ Sr5f-LdNq)
垢版 |
2020/04/09(木) 21:04:33.32ID:ZpQLfNz3r
ホントの初心者ならirbだけでよい。
それでちょっとまとまったことやりたくなったらメモ帳でも使えばよい。
いきなりVSCodeって、工作好きの子供にいきなり電動ドリルやチェーンソウを買い与えるような仰々しい印象なんだが。
まあ畢竟、外野が強制するものでもないし好きなものを使えばいい。
0366デフォルトの名無しさん (ワッチョイ 8252-b+QY)
垢版 |
2020/04/10(金) 09:18:05.41ID:Ntz3fYqx0
>>363
記録を目的にしたら本末転倒だろう。
最初のうちは色々入力して試行錯誤し、自分の頭で考えたり成功や失敗を繰り返し経験することのが大事。
まずは書き捨てていいからとにかく試して自分の理解がある程度整理できるようになってから残せばいい。
0368デフォルトの名無しさん (ワッチョイ a201-vZv9)
垢版 |
2020/04/10(金) 10:27:27.94ID:L7OYJgcU0
>>363
デフォルトで~/.irb_historyに1000行まで記録されてる
(2.6まではデフォルトでは履歴は無効、2.7からデフォルトで有効)

出力を含めた作業ログをファイルに残したいならそういう機能を持ったターミナルを使う
WindowsならPowerShellでStart-Transcript
0369デフォルトの名無しさん (ワッチョイ 2b17-8TKJ)
垢版 |
2020/04/10(金) 11:28:17.25ID:ccEovqrb0
>>363
絶望的なまでに頭が悪いなお前
それ読んで馬鹿にされたと思うのは劣等感の塊で自意識過剰なお前くらいだろ

そしてお前はirbのこと馬鹿にし過ぎ
教育現場でとっかかりとしてREPLを通して学ばせるなんて日常茶飯事だわ
東大でも準必修でRubyをirbを使って教わったぞ
0370デフォルトの名無しさん (ワッチョイ d714-9hq2)
垢版 |
2020/04/10(金) 11:39:21.89ID:4WnvV4mF0
>>366
いろいろ試行錯誤する時に、
あれ?さっきなんて入力したっけ?
ってなったら意味ないだろw

コードをじっくり見ないといかんし
勉強っていうのはタイプすることじゃないぞ
自分で何を書いたかを理解することだぞ
0377デフォルトの名無しさん (ワッチョイ 062c-5WFu)
垢版 |
2020/04/10(金) 13:24:11.57ID:2KZut19P0
初心者は、VSCode で、Code Runnner を使うべき!

メモ帳は、文字コード・BOM の有無で動かないから、使っちゃいけない!
web 系は、BOM 無しUTF-8 だから、メモ帳みたいな、BOM 付きUTF-8 はダメ!

Windows の文字コード、CP932/Windows-31J(shift-jis, sjis)も使っちゃいけない!

irb は、日本語入力でバグル。
複数行の構文も、ややこしい

if 条件式
else
end
0383デフォルトの名無しさん (ワッチョイ 567d-0bpl)
垢版 |
2020/04/10(金) 20:37:25.35ID:2wmBzsgU0
>>382
違います

学習とは「経験によって生じる比較的永続的な行動の変化、それを生じさせる操作、及びその過程」です
有名なパブロフの犬や迷路実験も学習の一種です
犬やネズミや昆虫等は記録を行いませんが学習しています
0385デフォルトの名無しさん (ワッチョイ 062c-5WFu)
垢版 |
2020/04/10(金) 20:50:51.83ID:2KZut19P0
VSCode の左側のファイルエクスプローラーで、
ファイルを右クリックして、右クリックメニューでターミナルで開くと、
そのファイルがあるフォルダで、PowerShell が起動する

ruby script.rb
みたいに、そのファイル名を引数にして、rubyコマンドを実行する

端末では、タブ文字で入力補完もできる
例えば、ruby scr で、タブ文字を押すと、
ruby .\script.rb みたいに、パス付きで補完される

\ は、バックスラッシュと同じ。
Windows では普通のスラッシュ、/ もパスとして使える

ruby ./script.rb
. は、今の(カレント)フォルダ
0388385 (ワッチョイ 062c-5WFu)
垢版 |
2020/04/10(金) 23:02:56.48ID:2KZut19P0
PowerShell・コマンドプロンプトから、ruby コマンドを実行できる

それらを、VSCode 内から起動せずに、単独で起動しても実行できる。
cd などのパスの移動コマンドも使える

cd ..
で、親フォルダへ移動するとか
cd ../..
で、親の親フォルダへ移動するとか

フォルダ内の中身を見るのに、
PowerShellなら、ls
コマンドプロンプトなら、dir

コマンドプロンプトよりは、PowerShellのコマンドの方が、
Linux コマンドと同じものが使えるので、覚えやすい
0390デフォルトの名無しさん (オッペケ Sr5f-LdNq)
垢版 |
2020/04/10(金) 23:30:56.45ID:716l2Eq1r
>>389
puts "Hello, World!"

とかいたscript.rbをどっかに保存しておく。
保存したフォルダでshiftを押しながら右クリックから「コマンド ウィンドウをここで開く」を選択。
出てきたコマンドプロンプトに

ruby script.rb

と打ち込めばよい。

もしくはパスが通ってるならそもそもscript.rbをダブルクリックするだけで実行される。

puts "Enterキーを押すと終わるよ"
gets

で保存して試してみるといい。
0391385 (ワッチョイ 062c-5WFu)
垢版 |
2020/04/10(金) 23:49:30.84ID:2KZut19P0
エクスプローラーのフォルダの上で、
shift キーを押しながら、右クリックすると、

PowerShell を、このフォルダで起動すると出る!
同様に、WSL を入れていれば、Linux シェルも起動できる

ちなみに、PowerShell・コマンドプロンプトを終了する時は、
exit と入力するか、ウインドウを閉じる

cd, ls, exit など幾つかは、PowerShellの基本コマンドも知っておいた方がよい
0392デフォルトの名無しさん (ワッチョイ 6f33-Xq4u)
垢版 |
2020/04/11(土) 01:27:54.54ID:EGHdPfzv0
>>388
Linuxと同じでもないし、同じだとしても別に覚えやすくはねえよ。
おまえがBashに慣れとるだけやろ。w
PowerShell もそれなりにクセがあるから、どっちもどっち。

まあ、今さらcmdはないやろ、というならわからんでもないが。
0394デフォルトの名無しさん (ワッチョイ a205-UCdZ)
垢版 |
2020/04/12(日) 10:47:12.08ID:ruKWfIE70
returnでは現在のメソッドしか終了できませんが、呼び出し元のメソッドごと終了させる方法はありますか?
各メソッドにフラグをチェックするメソッドを入れたのですが、フラグが条件を満たさなかったらreturnとするとフラグチェック用のメソッドが終了するだけになってしまいます
呼び出し元でフラグチェックメソッドの下にreturn if と入れればできますが毎回2行使ってしまうのでできれば1行に納めたいのですが…
0395デフォルトの名無しさん (ワイーワ2 FFfa-zfCe)
垢版 |
2020/04/12(日) 10:53:18.34ID:j35eJcDNF
例外かな
0397デフォルトの名無しさん (ワッチョイ d7ad-LdNq)
垢版 |
2020/04/12(日) 16:35:25.82ID:G3JTGpGI0
>>394
>return if と入れればできますが
できてるじゃん!
普通のIF文でもできるでしょ?

>毎回2行使ってしまう
行数が1行か2行かなんて気にしなくていい

それから例外を通常の条件分岐に使うのは
便利でも一般的にはあまり推奨できないな

もしもっと複雑な状態遷移に発展するなら
そもそも呼び出すメソッドを切り替える
仕組み(ステートパターンとか)も考えたい
0398デフォルトの名無しさん (ワッチョイ 062c-5WFu)
垢版 |
2020/04/12(日) 21:38:06.31ID:JZPIrIOa0
exit で終了できる。その例外は、SystemExit でキャッチできる。
ただし、exit! では、例外をキャッチできない

at_exit で終了直前の処理を書く。
ただし、後に書いたものから、先に実行される

他には、Signal.trap(:INT, "EXIT")
"EXIT"を指定した時は、シグナルを受け取ると終了処理を行ったあと、ステータス 0 で終了します

at_exit { puts "1" }
at_exit { puts "2" }

begin
exit
rescue SystemExit
puts "例外をキャッチ"
end

出力
例外をキャッチ
2
1
0399284 (ワッチョイ 062c-5WFu)
垢版 |
2020/04/13(月) 07:50:48.29ID:czmtm8eF0
Windows 10, WSL, Ubuntu 18.04 で、Rails 環境を構築するために、

nodejs も必要なので、既にインストールしていた、rbenv 環境を削除して、
anyenv で、rbenv, nodenv を管理することにしました

マイクロソフト、Rails Girls などは、バージョンマネージャーに、NVM を使っているようですが、
anyenv なら、使い方が同じなので楽です

rubyのコンパイルに、20分ほど掛かって、
ruby 2.6.6, node 12.16.2 を入れました!
0401デフォルトの名無しさん (ワッチョイ ff2c-8Jcx)
垢版 |
2020/04/16(木) 03:17:45.92ID:tywb42E30
漢数字が、順番に並んでいない!

ary = %w(一 二 三 四 五 六 七 八 九 十)
ary.sort!

p ary #=> ["一", "七", "三", "九", "二", "五", "八", "六", "十", "四"]

re = /[一-十]/
p "四".match( re ) #=> nil
p "七".match( re ) #=> "七"
0403デフォルトの名無しさん (エムゾネ FFbf-xa8R)
垢版 |
2020/04/16(木) 09:55:20.55ID:przIFznPF
sortにオプションがある言語もある
0407デフォルトの名無しさん (ワッチョイ 9f01-7Des)
垢版 |
2020/04/16(木) 19:02:06.03ID:phPWx1q30
>>401
require 'ya_kansuji'
array = %w(八京 2垓 1兆 壱萬 一兆 四 89 五 一 六 二 七 八 三 九 十 百 二十)
array.sort_by{|x| YaKansuji.to_i(x)}
#=> ["一", "二", "三", "四", "五", "六", "七", "八", "九", "十",
"二十", "89", "百", "壱萬", "一兆", "1兆", "八京", "2垓"]
0410デフォルトの名無しさん (ワイーワ2 FFdf-xa8R)
垢版 |
2020/04/17(金) 13:31:00.12ID:3B9MCfUYF
yet another
■ このスレッドは過去ログ倉庫に格納されています

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