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
2022/09/28(水) 18:40:33.30ID:BXnMv7Uva
コンテナ?

3日1回程度実行するスクリプトをこっちで行うかサーバーに持ってくかという話
こっちもpc常時起動してるわけじゃないから、正確に確実に実行するならサーバーで走らせ続けるほうが楽ではあるが
ここまで書いて気づいたけどサーバーのメモリ余計に使う事になるからやっぱやめる
2022/09/28(水) 19:07:17.74ID:fVRflvZP0
サーバの古いRubyコードをモジュールで使うわけじゃないなら
枯れたPerlで書けば解決
2022/09/28(水) 21:33:55.99ID:BXnMv7Uva
ん?いや古いモジュールとかじゃなくて、
ローカル実行でもサーバー実行でも良いコードを、どちらへもっていくか みたいな話
2022/09/28(水) 22:47:37.12ID:sYls8uor0
いまどきのRubyで書くと互換性の問題がでるなら
いっそPerlで書いたらという話
2022/09/28(水) 22:59:32.60ID:7XofIB3Ar
>枯れたPerlで書けば解決
正しいこと言ってるのに何故だか寂しくなる
2022/09/28(水) 23:22:18.60ID:BXnMv7Uva
Perlはないかなー
3.0だと構築しやすい環境があって
それがサーバーバージョンだと構築できるか不明で、
Perlだと普段使ってないんで
Perlのどのバージョンでどのモジュールバージョンがインストール有効か全く知らないので、さらに構築できる可能性が薄い、、
2022/09/29(木) 09:14:41.01ID:S94uJYpZ0
こういうのもYAGNIって言うのかな?
2022/10/02(日) 23:00:07.08ID:P9RAxpp00
Perlの互換性をあなどるな!
Rubyごときの常識では測れぬぞ!
2022/10/03(月) 22:36:01.59ID:mZNxA8zN0
perlは28年メジャーバージョン変えてないだけだろw
変えたらモジュールが全く付いていかず
後付けで別言語だったことにされた始末w

7にすると言った後もスルスル詐欺。もう崩壊寸前。
2022/10/04(火) 10:04:15.06ID:bSK5XELIM
rubyも変えない基本機能だけ永年保証版をつくればいいか
2022/10/04(火) 22:14:05.98ID:UryqQ3PG0
先がないって意味では似た者同士
2022/10/05(水) 08:09:51.42ID:I8FgU9ZAa
rubyで書かれたサイトはみんな死んでperlで書かれたmixiが生き残った
これも現実
2022/10/05(水) 20:16:53.48ID:CqdeFZnf0
>>544
Perl7は、Perl5最終版をほぼそのまま引き継ぐんやろ。
せやから問題ないはず!
2022/10/05(水) 21:04:39.92ID:qbCtmsWUa
perlの省略記法が上手くrubyにくれば文句ないんだけどな
_1 ってところまでは来たけどあと少し
マジックナンバーも覚えちゃえば効率良い
2022/10/05(水) 21:34:32.70ID:2RK+LAqWr
perlの省略記法好きなんだけどプロジェクトだと使いづらいんだよな……
551デフォルトの名無しさん (ササクッテロレ Sp03-G7zZ)
垢版 |
2022/10/10(月) 21:33:09.97ID:mVWGK/1kp
教えてください。
redditのr/rubyを読んでいて、以下のようなサンプルコードを書く人がいました。

lambda do
p 1
p 2
p 3
end[]

lambda {
p 1
p 2
p 3
}[]

-> {
p 1
p 2
p 3
}[]

このサンプルを書いた人は、Procとか、lambdaを使った書き方の違いを説明したかったようなので
議論の本質から外れるのですが、
Endや}の後の[]は、どんな意味があるかお分かりになりますでしょうか。
2022/10/10(月) 21:54:11.50ID:vcZFFA/Ea
https://docs.ruby-lang.org/ja/latest/method/Proc/i/=3d=3d=3d.html
lambdaメソッドで生成したProcオブジェクトの実行です
2022/10/10(月) 22:15:52.59ID:DUxtIWo2r
callしてるんでしょ
2022/10/11(火) 14:17:27.31ID:17+/w9Hg0
手続きオブジェクト・Proc は、
Proc.new, Kernel#proc, Kernel#lambda, -> 引数{ 処理 } で作れます。
Procを呼び出すには、Prco#call, Proc#[] を使う

g = -> x, y { x + y }

p g.call( 3, 4 )
p g.( 3, 4 )
p g[ 3, 4 ]

p -> x, y { x + y }[ 3, 4 ]

これらは全て、7 と出力される

最後のものは、JavaScript のIIFE (Immediately Invoked Function Expression; 即時実行関数式)みたいなものか?
定義されると同時に実行される
555デフォルトの名無しさん (ササクッテロレ Sp03-G7zZ)
垢版 |
2022/10/11(火) 21:55:19.45ID:bcaE1HrEp
>>552さん
>>553さん
>>554さん
教えていただき、ありがとうございます。
こういうcallの仕方があるって知りませんでした。
556デフォルトの名無しさん (ササクッテロレ Sp03-G7zZ)
垢版 |
2022/10/11(火) 21:57:33.74ID:bcaE1HrEp
>>554さん
p g.yield(3,4)もありますね。
2022/10/12(水) 03:59:02.03ID:rjG+co3La
色々あるけどrubyは多種多様な人達がどれかを選択するためにあるっつうイメージだから
自分が使うものは限定したほうが良いよ
Proc.new proc lambdaも詳細動作ちげーし
2022/10/12(水) 23:19:24.53ID:liNTEmfl0
しかし、Perlの融通無碍さを罵倒してたんちゃううんかい!
559デフォルトの名無しさん (ワッチョイ 6714-M13Z)
垢版 |
2022/10/13(木) 17:18:00.56ID:YUGI7Erj0
Rubyっていまさら学ぶ価値ありますか?
2022/10/13(木) 18:39:16.26ID:2KzUsHD30
SQLで十分
2022/10/13(木) 20:05:37.13ID:nAMqCzQ7d
あるかないかで言えばもちろんある
他のメジャーな選択肢と比較すれば価値が低いだけ
2022/10/13(木) 20:14:27.63ID:qa/FIGCma
目的設定してないなら何を学んでも時間の無駄
2022/10/13(木) 21:13:25.17ID:Tg7Fu5K4M
>>559
1. Webアプリの作り方を学びたい
2. オブジェクト指向を学びたい
3. プログラミングを学びたい

この3つのどれかなら今更でもRubyを学ぶ価値はある
1つの言語だけでやっていきたいみたいな考え方を持ってるならやめとけ
2022/10/13(木) 21:14:57.72ID:pWIAiZmDr
>>563
正論
2022/10/14(金) 13:58:42.57ID:ljWa0xD50
YouTube で有名な雑食系エンジニア・KENTA の初心者向けRuby on Rails サロンが有名。
KENTA, Rails専門学校・RUNTEQ, Deanin の動画などを参照

KENTAが勧めるキャリアパスは、Rails → Go のみ

主に、未経験者のモダンな転職先がRails。
つまり、ベンチャーなどへのプロの転職用フレームワーク

でもアマチュア用に、CSV などファイル操作するだけでも、Rubyは簡単
2022/10/14(金) 14:07:02.47ID:r95QbhkqM
たくさんの言語を同時相互翻訳できるのに、
なぜプログラム言語はできないのだろう

言葉よりプログラム言語のほうが簡単そう
語彙は言葉の方が圧倒的に多いし、文法も複雑
プログラム言語はちょっとした違いがすぐエラーになる、ここをなんとかすれば
いいわけだが
2022/10/14(金) 15:27:43.54ID:jrsxVe/4a
翻訳してコンパイル実行までいっぺんに考えるから作るの無理になるんじゃね
まず翻訳してコンパイルエラーとかは一旦無視したコード出力してから
別のロジック・プロジェクトとして整形するようにするとかさ
段階はあると思うよ
2022/10/14(金) 15:51:50.20ID:oF5RKx5oa
>>566
結局、翻訳先にない機能をどうにかするために
・機械語じみた可読性0の長大なプログラムに翻訳する
・翻訳元の言語のインタプリタを翻訳先の言語で作ってしまう
みたいなことになるかと
python2->python3の翻訳も確かうまく行かなかったんじゃなかったか?
2022/10/14(金) 18:08:42.41ID:KzgOwgYoM
コンバージョンプログラムいろいろとあるよ
知らないだけじゃない?
Java to Kotlinとか
2022/10/14(金) 18:48:07.45ID:ZVmcxfG6r
AltJS系も広義ではそうじゃないか
Opalとか
2022/10/14(金) 20:28:18.73ID:jrsxVe/4a
そういう0か100%かってのじゃなく、AIプログラミングに繋がる話だと思うけどね
2022/10/14(金) 21:04:51.58ID:baXL7k1XM
AI翻訳を通さないと何言ってるのかわからないや
2022/10/15(土) 00:31:52.18ID:IvRHkVgHM
>>566
プログラム言語に依るのだろう
RubyからPythonはできそうな気がするけど、C++からForthとかはあまりにも違いすぎて無理…
そう考えると、言葉よりもプログラム言語の方が違いが大きすぎるって事だな
2022/10/15(土) 00:37:52.24ID:1cOZHVrb0
>>566
> たくさんの言語を同時相互翻訳できるのに、
一般の言語で、完全に相互翻訳できるわけない
575デフォルトの名無しさん (テテンテンテン MM7f-WdpF)
垢版 |
2022/10/15(土) 11:11:10.80ID:7Qqe8Rg7M
slack の ruby-jp ってどこかに移転しました?
2022/10/15(土) 18:11:06.95ID:INu/t1220
>>566
やればできないわけもないんやから、結局は需要がない、ということやろ。

人の言葉は意志疎通のための翻訳やからアリ。
しかし、コンピュータ言語の翻訳結果は再利用のためのリソースを期待されがちやけど、ほぼムリなんでナシ。

実際、再利用でない実行のための変換なら、多用されとる。
コンパイラもそうやし、WebAssemblyなんかそのためやろし。
2022/10/15(土) 18:26:46.60ID:49IRcNny0
Haxeは、JavaScript(JS)、C++、C#、Java、JVM、Python、Lua、PHPを対象とする、
クロスプラットフォームアプリケーションを構築可能で、

各プラットフォームのネイティブ機能にアクセスできる、
オブジェクト指向のプログラミング言語

主に、HTML, JS ゲーム用で、Adobe Flash の後継。
Ruby には対応していない
2022/10/18(火) 13:36:19.02ID:fjjhfMGv0
「改訂2版 Ruby逆引きハンドブック」の「文字列を分割する」の所で、
split で構造体を定義するのは参考になる

Struct_Fields = %i(a b c) # フィールド名のシンボル配列
Foo = Struct.new( *Struct_Fields ) # 配列展開

input_data = ":x::y:" # コロン区切り

# ["", "x", "", "y"] 内の ["", "x", "y"] を取り出す
p tmp_ary = input_data.split( ":" ).values_at( 0, 1, 3 )

p obj = Foo.new( *tmp_ary )
#=> <struct Foo a="", b="x", c="y">
2022/10/18(火) 20:49:59.26ID:gz5lMMWOr
書き捨てのコードならいいけど微妙じゃね
2022/10/19(水) 21:20:50.39ID:Lu+vrvAs0
values_atが便利だなと
2022/10/20(木) 13:24:43.57ID:zGrDbuOl0
values_at に、range も渡せる

# ["", "x", "", "y"] 内の ["y", "", "x"] を取り出す
p tmp_ary = input_data.split( ":" ).values_at( 3, 0..1 )

下のinput_1 の出力が、なぜ、
["", "", "y", ""] にならなかったのだろう

冒頭のコロンの前には、"" があるのに、
末尾のコロンの後ろには、"" がない

# コロン区切り
input_1 = "::y:"
input_2 = "::y:a"

p input_1.split( ":" )
p input_2.split( ":" )

出力
["", "", "y"]
["", "", "y", "a"]
2022/10/20(木) 14:02:28.80ID:fK+SugQF0
https://docs.ruby-lang.org/ja/latest/method/String/i/split.html
ドキュメントに書いてるが
limit < 0
で末尾も残る
なぜかは知らんがなにか他の挙動にあわせたんだろう
2022/10/20(木) 18:34:41.93ID:zGrDbuOl0
ありがとう。そういうオプションがあったのか

# コロン区切り
input_1 = "::y:"

p input_1.split( ":" )
p input_1.split( ":", -1 )

出力
["", "", "y"]
["", "", "y", ""]
2022/11/15(火) 15:14:40.66ID:BxxcZFiKM
NSA、可能な限りメモリ安全なプログラミング言語を使うことを推奨
https://developers.srad.jp/story/22/11/13/042218/

C#・Go・Java・Ruby・Rust・Swiftなど
python脱落
2022/11/15(火) 20:50:38.98ID:u4oN4nv30
たしかに、TMをつけてまでRubyを挙げるのに、Pythonを挙げないのは意味がわからんな。w
伝統と信頼のPerlを入れろよ!とも思うし。
2022/11/15(火) 21:03:39.07ID:8tiGCKxN0
VMもそこらの拡張もそこまで安全に書けてると思えんが
2022/11/15(火) 22:17:37.16ID:9MQlhJri0
Python は字数の多さが敗因だろうな
588デフォルトの名無しさん (ワッチョイ 738f-DE9r)
垢版 |
2022/12/28(水) 13:12:25.93ID:+yyf2wj20
Ruby 初心者が最初に絶対に身に着けないといけない常識って
ユーザーグループのキモい人達への無条件の敬意と忠誠(を払ってるフリ)じゃね
2022/12/28(水) 13:30:38.49ID:xff+tzRk0
何言ってんだ、こいつ?
2022/12/28(水) 22:34:40.01ID:SmTZmVnPr
rails slackはそんな雰囲気ではないが何のこと言ってるんだか
2022/12/28(水) 22:34:54.53ID:SmTZmVnPr
railsじゃなくてruby-jpか
2022/12/31(土) 14:21:30.95ID:MXKHIln50
Rubyの静的型ってみんな使ってんの?
2023/01/01(日) 10:40:08.74ID:ZyLRd4DP0
https://mevius.5ch.net/test/read.cgi/hp/1439005423/331
から誘導されて来ました。
JavaScriptで日付が変わると自動で音が鳴るというものを作るにはどうしたらいいですか?
2023/01/01(日) 13:19:44.80ID:TB0Q4LnJ0
スレタイみて誘導がイタズラだと思わんかったん?
2023/01/01(日) 13:40:43.56ID:SpXTBx4O0
JavaScriptで日付が変わると自動で音が鳴るというものを作るにはどうしたらいいですか?
596デフォルトの名無しさん (ワッチョイ df10-+64g)
垢版 |
2023/01/01(日) 16:55:07.16ID:oLAa0eV20
perl好き
ruby嫌い
crystal好きだが
crystalもパッケージ増えていくとぐちゃぐちゃになるんだろうな
2023/01/12(木) 17:09:40.21ID:qeO58bDma
#! ruby

# -*- coding: UTF-8 -*-


require 'libev_scheduler'

Fiber.set_scheduler(Libev::Scheduler.new)


puts "Go to sleep!"

Fiber.schedule do

puts "Going to sleep"

sleep(1)

puts "I slept well"

end

puts "Wakey-wakey, sleepyhead"


exit
2023/01/12(木) 17:16:55.61ID:qeO58bDma
途中で送信した

https://docs.ruby-lang.org/en/3.0/Fiber.html
のサンプルを試してみたのだが、


Go to sleep!
Going to sleep
Wakey-wakey, sleepyhead
I slept well

と表示されるはずが、何故か実際に実行すると

Go to sleep!
Wakey-wakey, sleepyhead
Going to sleep
I slept well

と表示されてしまう
Fiber,schedule は、Fiber を新規作成して即時実行のはずなので、ドキュメントの通り Going to sleep が先に動くはずなのに何故順番が逆になっているのかさっぱりわからない?
どういうことだろう??
2023/01/12(木) 17:42:17.84ID:k/txfnyN0
今どき2行目が必要な環境ってある?
コードは全部ASCIIだし脳死で書いてない?

>Fiber,schedule は、Fiber を新規作成して即時実行のはず
これを信用するとしてputsもI/Oだからとか(しらんけど)
配列pushなんかに変えてみて最後に出力してみては
2023/01/14(土) 16:20:53.55ID:XG+wNT9X0
irb 1.6.2(ruby 3.2.0付属)について質問です。

文字入力時には自動補完せず、タブキーを押したときに自動補完させるにはどうすればよいでしょうか?

入力時の自動補完だと入力の邪魔になってしまうので任意のタイミングで自動補完させたい、という意図です。

.irbrcに IRB.conf[:USE_AUTOCOMPLETE] = false (あるいは --noautocomplete で起動)
とした場合、タブキーで補完候補が一気に出力されてしまい補完候補の選択ができませんでした。
601デフォルトの名無しさん (アウアウウー Sa91-wtyD)
垢版 |
2023/01/14(土) 23:55:35.78ID:v+aDVA7Ga
Stack Overflow 2023年の年収。高中低

Ruby, Elixir : 9.3 万ドル
Go : 8.9
Rust : 8.7

Python : 7.1
TypeScript, C# : 7
Kotlin : 6.9
C++ : 6.8
C : 6.7
JavaScript : 6.6
Java : 6.5
HTML/CSS : 6:4
VBA : 6:2

PHP : 5
Dart : 4.4
2023/01/15(日) 03:00:28.41ID:6m68H/Iaa
確かに、puts もI/O だから、表示される順番は確定しないのかも
2023/01/15(日) 03:04:07.46ID:6m68H/Iaa
>>600
irb よりも、VSCode の拡張機能・Code Runner を使えば?

右クリックメニューから、ファイル全体または選択したコード片を実行できる
2023/01/15(日) 16:50:45.07ID:aMclAZtfa
>>599
なるほど、と試した結果

r=[]
r << "Go to sleep!"
Fiber.schedule do
r << "Going to sleep"
sleep(1)
r << "I slept well"
p r
end
r << "Wakey-wakey, sleepyhead"
p r
exit

# ["Go to sleep!", "Wakey-wakey, sleepyhead"]
# ["Go to sleep!", "Wakey-wakey, sleepyhead", "Going to sleep", "I slept well"]

ドキュメントには即時実行とあるけど、メインの最後まで実行してから動き始めているように見えますね
Fiber.schedule do
に与えたブロック同士では想定通りの実行切り替えはされるようですが、ドキュメント通りの動きには何故かなっていない模様……
2023/01/15(日) 16:52:49.17ID:aMclAZtfa
一行目がexitの前の出力で、2行目が Fiberのブロックからの出力です
2023/01/22(日) 21:54:06.16ID:mu8Nl5mu0
RubyのBigdecimalの最大桁数っていくつ?

puts (BigDecimal("2",1000) ** ((BigDecimal("2",1000) ** (BigDecimal("1031",1000) - BigDecimal("1",1000))) - BigDecimal("1",1000))) * (BigDecimal("2",1000) - (BigDecimal("2",1000) ** BigDecimal("-3705346855594118253554271520278013051304639509300498049262642688253220148476920",1000)))

が計算できない。

https://ideone.com/jyxgVq
2023/02/06(月) 12:23:28.94ID:t0SsOUx4a
パソコンのメモリサイズが大きければ、大きくなるのかも。
Bigdecimal の最大桁数の設定は無いの?

Elixir では、130GB メモリで、
1秒間に、5千万の小プロセスを起動できたという記事を見た
2023/02/23(木) 19:35:23.59ID:bE7hCXJI0
公式サイトの日本語ドキュメントって内容ものすごく古いままなんだな
例えばC API一覧にrb_compile_cstrが載っているが2.7.7や3.2.1のヘッダファイルにはこの関数は無い(他にも無い関数が多数ある)
WebArchiveから1.8のソースを入手してみたら存在したわ
少なくともC APIを使おうと思ったら英語版ドキュメントを参照しないとだめだな
2023/02/23(木) 20:04:10.36ID:bE7hCXJI0
英語ドキュメント読んだらあっさりできましたわ
日本語ドキュメントには「1.xの頃のまま更新していません。最新版は英語版を見てね」と注記しておくべきだと思った
そりゃ「まだまだ書き直しが必要です」と書いてあるけどそんな古いままとか思わんやん

// rubyスクリプトで定義した関数fをCから呼び出す
#include <ruby.h>
int main()
{
ruby_init();
VALUE v = rb_eval_string("def f\np 'Hello'\nend");
rb_funcall(v, rb_intern("f"), 0, 0);
ruby_cleanup(0);
return 0;
}
2023/02/24(金) 13:11:19.67ID:lmfpmsq50
やる気見せんかーい
2023/02/24(金) 20:23:01.89ID:esYaZE7H0
ごめんなさい609のコードだとVisual Studioではruby_initでクラッシュするみたい
正しい初期化は下記の模様
linuxだと609のコードでも何故か動いてしまったけど

// rubyスクリプトで定義した関数fをCから呼び出す
#include <ruby.h>
int main(int argc, char *argv[])
{
ruby_sysinit(&argc, &argv);
RUBY_INIT_STACK
ruby_init();
ruby_init_loadpath();
VALUE v = rb_eval_string("def f\np 'Hello'\nend");
rb_funcall(v, rb_intern("f"), 0, 0);
ruby_cleanup(0);
return 0;
}
2023/03/02(木) 01:01:19.02ID:C78KeSuO0
手動でgem installしたものって

> gem list | grep -v default:
debase (0.2.5.beta2)
debase-ruby_core_source (3.2.0)
debug (1.7.1)
matrix (0.4.2)
minitest (5.17.0, 5.16.3)
...
をメモっておけば別PCでも同じ環境を再現できますか?
613デフォルトの名無しさん (ワッチョイ 1a70-XXd9)
垢版 |
2023/03/03(金) 01:21:26.43ID:kpW9zhd70
railsチュートリアルやってるけどminitest難しいなあ
実際の現場も使ってるんですか?それともRspec?
どちらも難しいのかね
2023/03/04(土) 19:37:33.36ID:ggY8eI1VD
まず、gem のダウンロード時に、ドキュメントをダウンロードしたくなければ、
各ユーザーのホームディレクトリに、.gemrc ファイルを作って、以下の2行を書いておく

install: --no-document
update: --no-document

既にダウンロードしたドキュメントも全て削除する

次に、gemでbundler をダウンロードする。
その後は各プロジェクト毎に、gemではなく、
複数のモジュールの依存関係を解決する、bundlerを使えばよい

Gemfile/Gemfile.lock ファイルは、
JavaScript のpackage.json/package-lock.json/yarn.lock ファイルと同じ

お勧めは、irb を使わず、
VSCode で拡張機能・Code Runner を使う。
これは右クリックメニューから、ファイル全体または選択したコード片を実行できる

さらにRuby on Rails なら、WSL2, Linux, Docker Desktop も使う

多言語バージョンマネージャーは、
日本人が作ったanyenv で、rbenv, nodenv なども使える。
asdf もある

Renv, crenv, denv, erlenv, exenv
goenv, hsenv, jenv, jlenv, luaenv
nodenv, phpenv, plenv, pyenv, rbenv
sbtenv, scalaenv, swiftenv, tfenv
2023/03/05(日) 08:30:53.03ID:eEwP+0xWa
Code Runnerを気軽に勧める人おるが
アレわりと邪悪な拡張だと思うんだよなぁ

ちゃんと環境作ったほうがいいし
簡易ですませる場合もコンソール使った方がよくない?
2023/03/05(日) 08:36:16.49ID:TCOo6fxCa
邪悪というと、語弊があるか
…邪道もしくは害悪あたり


アレがファイルではなくコードを実行してるあたりを認識せずにハマってる初学者何人か見た
2023/03/07(火) 01:04:58.17ID:oFQklhQHa
山田祥寛のRuby 3 の本でも、MSYS2 のRuby Installer を使っているけど、
VSCode の拡張機能・Code Runner を使っている

Code Runner では、この設定をチェックしておくと良い。
Code-runner: File Directory As Cwd
Whether to use the directory of the file to be executed as the working directory.

そうすると実行時にcd で、そのファイルがある場所へカレントディレクトリを移動してから、
ruby "絶対パス/ファイル名.rb"
又は、ruby "絶対パス/tempCodeRunnerFile.rb"
で、そのファイルを実行する

tempCodeRunnerFile.rb は、Rubyのコード片をコピーした一時的なファイル

設定項目、executorMap には、多くの言語の実行コマンドが書いてある。
"code-runner.executorMap": {

"javascript": "node",

"c": "cd $dir && gcc $fileName -o $fileNameWithoutExt && $dir$fileNameWithoutExt",
"cpp": "cd $dir && g++ $fileName -o $fileNameWithoutExt && $dir$fileNameWithoutExt",

"python": "python -u",
"ruby": "ruby",
2023/03/07(火) 02:03:47.62ID:vk4APYnr0
そもそもWindowsを使うべきでないし、
MSYS2も使うべきでないし、
Code Runnerなんか使うべきでない
619デフォルトの名無しさん (ワッチョイ 8b40-oEU1)
垢版 |
2023/03/07(火) 08:33:17.73ID:eOMIe0zX0
 Progateというプログラミング学習サイトのRuby on Rails5の開発環境を用意しようコースで、rubyのバージョン確認、SQLのインストール、Railsのインストールまではスムーズ行えたんだけど、その次のRailsアプリケーションという所でコマンドプロンプトを使って《rails new ファイル名 -G》のコマンドを入力すると、下の方に下記のようなエラーが複数出てきてその後の《rails server -G》のサーバー起動の時にも同じエラーが出て上手くいかない。
どうすれば良いんですか?エラー内容を見ても分からない。

それぞれのバージョンは
【Ruby】ruby 3.0.5p211 (2022-11-24 revision ba5cf0f7c5) [x64-mingw32]
【Rails】Rails 7.0.4.2
【PC】64 ビット オペレーティング システム、x64 ベース プロセッサ

エラーは
C:/Ruby30-x64/lib/ruby/3.0.0/pathname.rb:50:in `match?': invalid byte sequence in UTF-8 (ArgumentError)
from C:/Ruby30-x64/lib/ruby/3.0.0/pathname.rb:50:in `chop_basename'
from C:/Ruby30-x64/lib/ruby/3.0.0/pathname.rb:374:in `plus'
from C:/Ruby30-x64/lib/ruby/3.0.0/pathname.rb:354:in `+'
from C:/Ruby30-x64/lib/ruby/3.0.0/pathname.rb:420:in `join'
from C:/Ruby30-x64/lib/ruby/3.0.0/bundler/settings.rb:444:in `global_config_file'
from C:/Ruby30-x64/lib/ruby/3.0.0/bundler/settings.rb:93:in `initialize'
from C:/Ruby30-x64/lib/ruby/3.0.0/bundler.rb:331:in `new'
from C:/Ruby30-x64/lib/ruby/3.0.0/bundler.rb:331:in `settings'
from C:/Ruby30-x64/lib/ruby/3.0.0/bundler/env.rb:20:in `report'
from C:/Ruby30-x64/lib/ruby/3.0.0/bundler/friendly_errors.rb:72:in `request_issue_report_for'
from C:/Ruby30-x64/lib/ruby/3.0.0/bundler/friendly_errors.rb:50:in `log_error'
from C:/Ruby30-x64/lib/ruby/3.0.0/bundler/friendly_errors.rb:109:in `rescue in with_friendly_errors'
from C:/Ruby30-x64/lib/ruby/3.0.0/bundler/friendly_errors.rb:101:in `with_friendly_errors'
from C:/Ruby30-x64/lib/ruby/gems/3.0.0/gems/bundler-2.2.33/libexec/bundle:37:in `<main>'
620デフォルトの名無しさん (ワッチョイ 8b40-oEU1)
垢版 |
2023/03/07(火) 10:07:23.72ID:eOMIe0zX0
OSはWindows11 home 22H2です
2023/03/07(火) 10:44:28.93ID:0yJrO03Z0
VisualStudioCodeでRailsの環境構築が上手くできません
https://ja.stackoverflow.com/questions/92611/visualstudiocode%E3%81%A7rails%E3%81%AE%E7%92%B0%E5%A2%83%E6%A7%8B%E7%AF%89%E3%81%8C%E4%B8%8A%E6%89%8B%E3%81%8F%E3%81%A7%E3%81%8D%E3%81%BE%E3%81%9B%E3%82%93

ここにあるのと同じハマり方してるなら、ユーザー名が日本語になってて
ハマってるパターンかなあ。

自分ならとりあえず指示通りにC:\TempとC:\Homeフォルダを作ってコマンドプロンプトで
set TMP=C:\Temp
set HOME=C:\Home
して試してみるかな。

駄目なら次は新しくアルファベットのみでユーザー作って試す。
途中で再インストールも辞さない構え。
2023/03/07(火) 10:49:58.83ID:0yJrO03Z0
どうしても解決できないがRailsに触ってみたいなら
Railsチュートリアルに従ってCloud9上でやるか(多分クレカが必要)
WSLの導入を検討するかかなあ。


昔もフォルダ名にスペースが含まれたり日本語が含まれてて
動かんとかよくあったけどいまだにあるんだなあ。
623デフォルトの名無しさん (ワッチョイ 8b40-oEU1)
垢版 |
2023/03/07(火) 11:38:27.82ID:eOMIe0zX0
>>621
 ユーザー名は日本語ですねwひらがな2文字です。
それがそんなに影響してるんすね
624デフォルトの名無しさん (ワッチョイ 8b40-oEU1)
垢版 |
2023/03/07(火) 12:50:55.71ID:eOMIe0zX0
>>621
 とりあえずユーザー名を変えて試してみたらいいんですかね?
2023/03/07(火) 14:06:24.57ID:0yJrO03Z0
>>624
多分単純にユーザー名変えるだけだとフォルダ名は変わらないから駄目なんじゃないかな。
新しくアルファベットのみのユーザー作って、そのユーザーでログインしないと。


ただ、それをすると今のユーザーの設定は引き継がれないし
Rails使う時だけそのユーザーにログインしないといけなくなるのでちょっとめんどくさいかも。
2023/03/07(火) 14:10:48.58ID:vk4APYnr0
だから、初心者ほど、あれほどWindowsを使うなと言っているわけで
2023/03/07(火) 14:22:52.66ID:0yJrO03Z0
RailsチュートリアルでCloud9をわざわざ使ってるのも環境統一できるからだしなあ。
自分がどうしてもWindowsマシン1台でやれって言われたらWSLでUbuntu入れて
そこでやる。
628デフォルトの名無しさん (ワッチョイ 8b40-oEU1)
垢版 |
2023/03/07(火) 14:23:46.47ID:eOMIe0zX0
>>625
 ユーザー名を変えた後にrubyをアンインストールして入れ直したりしても無理なんですかね?
2023/03/07(火) 14:40:43.15ID:msqWHE5U0
Windows固有の問題も聞かないと解決できないんだし
WSL2でやるのがまちがいないよ
このあともネイティブ拡張や外部プログラムに依存してるgemで絶対ハマる
630デフォルトの名無しさん (ワッチョイ 8b40-oEU1)
垢版 |
2023/03/07(火) 14:51:13.04ID:eOMIe0zX0
>>625
 rails使う時だけで良いですね、指示通りにできなくてどうしてもやりたくてモヤモヤしてるだけなんで。
なんなら新しいユーザーをrailsにしようとおもいます
2023/03/07(火) 15:00:44.35ID:0yJrO03Z0
>>630
やってみて、できたら報告してくれるとうれしい。


それでも駄目ならWSLについて調べてそっちでやれば割とすんなり行くんじゃないか。
ググるかqiita調べれば記事いっぱいでてくるだろう。
2023/03/07(火) 15:58:28.99ID:CdvGJ9oAa
>初心者ほど、あれほどWindowsを使うな

Rubyに関しては同意
っていうかRubyもうオワコンで良くね
633デフォルトの名無しさん (ワッチョイ 8b40-oEU1)
垢版 |
2023/03/07(火) 15:59:29.31ID:eOMIe0zX0
よく分かんないんすけどWindowsでrubyを触ること自体あまり良くないんすか?
634デフォルトの名無しさん (ササクッテロロ Sp45-Ip/m)
垢版 |
2023/03/07(火) 16:12:13.76ID:09h4aa1hp
Rubyとjava選べるならどっちやるよ?
2023/03/07(火) 19:56:32.42ID:cliNPotC0
そもそもWindows上でプログラミングすることがあんまり推奨できない
パスとか漢字コードとか引っかかるところ大杉
636デフォルトの名無しさん (ワッチョイ eb01-oEU1)
垢版 |
2023/03/07(火) 20:15:30.84ID:uRhwCRx20
>>635
 じゃあMacとかが良いんですかね?
レスを投稿する

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

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