[表示 : 全て 最新50 1-99 101- 201- 301- 401- 501- 601- 701- 801- 901- 1001- 2ch.scのread.cgiへ]
Update time : 08/13 18:23 / Filesize : 307 KB / Number-of Response : 1052
[このスレッドの書き込みを削除する]
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧] [類似スレッド一覧]


↑キャッシュ検索、類似スレ動作を修正しました、ご迷惑をお掛けしました

Ruby 初心者スレッド Part 66



1 名前:デフォルトの名無しさん [2020/01/04(土) 01:15:34.30 ID:X7t3Qsuc0.net]
プログラミング言語 Rubyについての、初心者向けスレです。質問・要望・雑談などをどうぞ

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

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

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

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

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

Ruby コミュニティ公式
https://www.ruby-lang.org/
VIPQ2_EXTDAT: checked:vvvvv:1000:512:: EXT was configured

236 名前:デフォルトの名無しさん mailto:sage [2020/03/06(金) 21:40:53.72 ID:f8XVsIbI0.net]
Rubyの方がCOBOLより先に死滅する希ガス

237 名前:デフォルトの名無しさん [2020/03/06(金) 22:57:29.86 ID:rcgbHB5O0.net]
慢心と言うより
補助金事業になったら碌なことにならない例の一つ

238 名前:デフォルトの名無しさん (ワッチョイ cbad-wzO4) mailto:sage [2020/03/07(土) 03:49:31 ID:meF2wfp30.net]
補助金が腐らせるの
日本のあるあるだな!

239 名前:デフォルトの名無しさん (ワッチョイ ef8c-NYnE) [2020/03/07(土) 12:58:20 ID:Q0oLpIzl0.net]
>>226
コメントアウトの仕方

240 名前:デフォルトの名無しさん (ワッチョイ 2ba5-Inmc) mailto:sage [2020/03/07(土) 13:58:54 ID:H7f33zo10.net]
Rubyは日本の言語ではなくて
日本発だけど
日本からアメリカのユタ州に税金を抜かれるだけの言語だ

241 名前:デフォルトの名無しさん [2020/03/07(土) 16:10:40.97 ID:ZoK+qwRc0.net]
補助金で食える人数も限られてるから、余計に閉鎖的になってく

242 名前:デフォルトの名無しさん mailto:sage [2020/03/07(土) 19:42:14.60 ID:meF2wfp30.net]
補助金で喰える上級Ruby国民は安泰だけど
下級Ruby国民はPythonに逃げ出してる現状

243 名前:デフォルトの名無しさん (ワッチョイ 4b2d-hds7) [2020/03/10(火) 16:47:55 ID:rx4TAX460.net]
Rubyの高額教材屋も増えまくってたり、こんなの国が金を出して支援するもんじゃないよもう

244 名前:デフォルトの名無しさん (ワッチョイ ab01-xzLc) mailto:sage [2020/03/10(火) 21:55:43 ID:uPXabSQ00.net]
perlの保守性の低さについて何も学ばなかったから。



245 名前:デフォルトの名無しさん mailto:sage [2020/03/15(日) 06:29:59.66 ID:d7tE7oy90.net]
リファレンスマニュアルの正規表現の一覧に
(<=pat) 肯定後読み
となってるけど正しくは (?<=pat) ですよね

246 名前:デフォルトの名無しさん mailto:sage [2020/03/15(日) 07:01:08.84 ID:fxB2xu91r.net]
せやね

247 名前:デフォルトの名無しさん (ワッチョイ 698f-tF/6) mailto:sage [2020/03/17(火) 10:26:17 ID:55EeZ8o40.net]
AI環境の差は大きいっすねー
保守性とかどうでもいいしrubyの文法は好きだけど、今から勉強する人にはphthon勧めざるを得ない

248 名前:デフォルトの名無しさん (ワッチョイ a1ad-M7Q/) mailto:sage [2020/03/17(火) 11:47:19 ID:xPTEZvMY0.net]
PythonはAIライブラリそろってるからな

249 名前:デフォルトの名無しさん mailto:sage [2020/03/17(火) 18:17:35.92 ID:Np3/43wU0.net]
機械学習や統計処理のために
プログラミングできるようになりたいというひとは
迷わずPythonから初めればいいけど
明確な目的がない場合はRubyから初めさせたほうが
プログラミング自体の習熟が断然早い

1ヶ月程度でプログラミングの基礎を身につけたら
後は好きなやつやればいいと思う
新卒で2~3言語学ばせるABテストとかやってみたいね

250 名前:デフォルトの名無しさん mailto:sage [2020/03/17(火) 18:19:24.38 ID:ybHHyXnP0.net]
ABテストやってないのになんでRubyからの方がいいって分かるの

251 名前:デフォルトの名無しさん (ドコグロ MM95-Syvm) mailto:sage [2020/03/17(火) 18:38:35 ID:7aCFf3OgM.net]
明確な目的のない奴にRails専用スクリプト(別名Ruby)を勧めるのはさすがにどうかと

252 名前:デフォルトの名無しさん mailto:sage [2020/03/17(火) 19:08:20.64 ID:55EeZ8o40.net]
別にrailsなんかなくたってperlよりモダンな汎用スクリプト言語ではあるやろ

253 名前:デフォルトの名無しさん mailto:sage [2020/03/17(火) 19:19:47.39 ID:7aCFf3OgM.net]
>>244
Windowsでまともに使い物にならないのは汎用スクリプトとしては致命的
ぶっちゃけPythonがビッグデータやAIで持て囃されてるのもWindowsと相性いいからだよ
ビッグデータやAIはエンタープライズで金になるテーマだからWindowsと相性悪いのは論外

254 名前:sage (ワッチョイ a265-aX25) [2020/03/17(火) 22:30:48 ID:Zy9Qhkko0.net]
つまり、わざわざRubyスレまで乱入してしまうほど、
Python信者にはRubyへのコンプレックスが強いってことね



255 名前:デフォルトの名無しさん (ワッチョイ d233-YfnF) mailto:sage [2020/03/17(火) 22:32:51 ID:Ai6ps0PO0.net]
じゃあPowerShellで!

256 名前:デフォルトの名無しさん (ワッチョイ c201-Ruah) mailto:sage [2020/03/17(火) 23:16:01 ID:Np3/43wU0.net]
>>242
C#, JS, Python, Ruby他で初心者教えた経験から来る個人の感想
逆になんでABテストやらないと分からないと思うの?

257 名前:デフォルトの名無しさん (ワッチョイ 02a5-5LgE) mailto:sage [2020/03/17(火) 23:40:22 ID:ybHHyXnP0.net]
そりゃ教師そのものがRubyが得意でRuby贔屓ならRubyを教えるのが上手いんでしょ
だから生徒はRubyの習熟が早くなる
だから本人ですら「ABテストは必要」って思ってるんでしょ

要するに生徒の言語取得速度は教師の得意言語の習熟度合いに比例する

258 名前:sage (ワッチョイ a265-aX25) [2020/03/17(火) 23:45:23 ID:Zy9Qhkko0.net]
ぶっちゃけ、Rubyに慣れると、Pythonでコレクションを使うことが苦痛になるんだよな


「コレクションが最高にイケてる言語を作ろう(dat落ち)」から引用
mevius.2ch.net/test/read.cgi/tech/1491491123/43-45

> 43 1 名前:デフォルトの名無しさん Mail: 投稿日:2017/05/05(金) 18:00:36.59 ID:oGFFYBoD
> コレクション使ってて使いづらいと思うことも最近は減ってきたよな
> 昔より言語が進歩してるんだろか
>
> 44 名前:デフォルトの名無しさん Mail: 投稿日:2017/05/05(金) 21:23:00.44 ID:Qc8J8Hpx
> >>43
> でもねぇ、世の中にはコレクション操作が使いづらい
> 退化した最悪な言語が存在する
>
> d.hatena.ne.jp/edvakf/20090405/1238885788
>
> 元々は手続き型として設計された簡潔な言語だったけど、
> オブジェクト指向やら関数型やらを行き当たりばったりに増築し続けたおかげで、
> コレクション操作に関する「一貫性」という設計哲学が破綻してしまった例だね
>
> 45 名前:デフォルトの名無しさん Mail: 投稿日:2017/05/05(金) 21:52:01.71 ID:Qc8J8Hpx
> [Ruby]
> a.sort().reverse().map{|x| x.to_s}.join('-')
>
> [JavaScript]
> a.sort().reverse().map(function(x) { return x.toString() }).join(“-“)
>
> [Python]
> '-'.join(map(lambda x: str(x), reversed(sorted(a))))

259 名前:sage (ワッチョイ 5365-f0Va) [2020/03/18(水) 00:02:08 ID:NlFyVHMs0.net]
>>250 のコレクション操作を例にすると、Rubyならメソッドチェーンが
左から右へ自然と流れるから、ヒストリー機能を利用して
対話的なプログラミングが楽々と実践できる

$ irb
irb(main):001:0> a = [1,4,3,2]
irb(main):002:0> a.sort
=> [1, 2, 3, 4]
irb(main):003:0> a.sort.reverse
=> [4, 3, 2, 1]
irb(main):004:0> a.sort.reverse.map(&:to_s)
=> ["4", "3", "2", "1"]
irb(main):005:0> a.sort.reverse.map(&:to_s).join('-')
=> "4-3-2-1"
irb(main):006:0>

Ruby利用者にとっては特別でもなんでもない当たり前の常識だけど、
Pythonの対話環境じゃ無理なのが、いやはやなんとも

260 名前:デフォルトの名無しさん (ワッチョイ 292c-cvBQ) mailto:sage [2020/03/18(水) 00:49:04 ID:LQtyodHE0.net]
元々、Ruby/Groovy は似てる。
JavaScript, Kotlin も、Ruby/Groovy に似せてきてる

>>241
有名な雑食系エンジニア・KENTA も、YouTube で言ってるけど、
将来的に、機械学習・AI をやりたいからと言って、Python から始めるのは間違いです!
初心者は、Ruby でプログラミング自体を学ぶべき

Ruby on Rails を一通りやると、アプリ製作の全工程を学べる。
後はそれを他言語へ置き換えるだけ

それと、多くの学校が、Ruby を勧めるのは、就職率が高いから。


261 名前:Python の場合は、web系の仕事が、1/10 しかない

機械学習・AI は、大学院・英検準一級などの高学歴が必要だから、
高卒などのプログラミング初心者を雇わない

高卒web系プログラマーは、Ruby。
高学歴総合職は、Python

この内、学校で教えられるのは、Ruby。
Pythonを教えても、就職できないから詐欺になってしまう
[]
[ここ壊れてます]

262 名前:デフォルトの名無しさん (ワッチョイ d9ad-NT4g) mailto:sage [2020/03/18(水) 04:59:33 ID:/KOWoh670.net]
>>244
それな
RailsなくてもRuby単体でも十分快適

ただWindows環境とデスクトップでのGUIが
どっちもイマイチだからWeb専用言語
みたいな扱いになってるんだろうか?

263 名前:デフォルトの名無しさん (ワッチョイ d9ad-NT4g) mailto:sage [2020/03/18(水) 05:02:26 ID:/KOWoh670.net]
>>250
Rubyは文法がシンプルで書きやすいんだよな
書きやすさだけで言ったら
Ruby > Python >>> JavaScript

JavaScriptは変なクセと
ローカルルールが多すぎる

264 名前:デフォルトの名無しさん (ワッチョイ 29d2-CgSh) [2020/03/18(水) 08:17:19 ID:r6r+WwC90.net]
>>250
Rubyのjoinなら事前の文字列化は不要なので
a.sort.reverse.join('-')



265 名前:デフォルトの名無しさん [2020/03/18(水) 13:14:11.40 ID:fwLKdVFoF.net]
語順に拘る必要は無いと思う
a = [3,5,1,2,4]
'-'.join(pd.Series(a).sort_values(ascending=False).apply(str))

266 名前:デフォルトの名無しさん (ワッチョイ 9301-lXNI) mailto:sage [2020/03/18(水) 14:43:54 ID:mQYnVt2r0.net]
>>249
違うよ
教えるコアな要素は共通にもかかわらず
初心者がつまづく内容や頻度だったりそれを自己解決できる割合が言語によってかなり違う
それが習熟速度に影響を与える一番の要因

ABテストやってみたいねと書いたのは複数言語を学習する順番が
プログラミング習熟度に与える影響の調査をペーパー書けるくらいフォーマルにやってみたいねって話
3言語なら最低6グループ必要になるわけで
統計的に意味ある人数集めてそんなテストするの普通の会社では無理だからね
Aグループ: Ruby -> Python -> JavaScript
Bグループ: Python -> JavaScript -> Ruby


267 名前:デフォルトの名無しさん (ワッチョイ 9301-lXNI) mailto:sage [2020/03/18(水) 14:56:08 ID:mQYnVt2r0.net]
>>256
思考の順序とコードで表現する順序が近ければ近いほど
思考ノイズが少なくて初心者に限らず人間には理解しやすい
単にできればいいってもんじゃない

結局Pythonでわかりやすく読みやすいコードを書くには
自然な思考順序と異なる部分をラップした関数を独自に定義していくか
Pythonで表現できる順序に自分の思考順序を合わせていくしかなく
一般に読みやすいと思えるコードを書く労力がRubyに比べると段違いで多い

少し前にPythonスレで質問があったflattenがいい例

268 名前:デフォルトの名無しさん mailto:sage [2020/03/19(木) 04:20:21.38 ID:JDU05jIv0.net]
Ruby の偽は、nil, false の2つだけだが、
JavaScript, Python では、各型に偽があるので、10個ぐらいある

こういう書き方ができてしまうのが危険!
整数の0 は偽

昔のC でも、MISRA-C などのコーディング規則で禁止していたもの。
条件式に、bool 値とみなされるもの以外を、
例えば、単純な整数などを使ってはならない

let ary = [ ]
let message = ""

if ( ary.length ) {
message = "真"
} else {
message = "偽"
}

console.log( message ) //=> 偽

269 名前:デフォルトの名無しさん mailto:sage [2020/03/19(木) 07:34:00.79 ID:Twc2892j0.net]
>>258
Rubyの文法は自然だと思う

>>259
ゼロを偽に使うのは筋悪だね

270 名前:デフォルトの名無しさん mailto:sage [2020/03/19(木) 09:26:18.85 ID:YUAN2W2v0.net]
コマンドが正常に終了した時は0を返すもんですよ

271 名前:デフォルトの名無しさん [2020/03/19(木) 12:39:59.01 ID:Xi+VoJGEd.net]
Rubyが理解できれば、JavaScriptもだいたい理解できるってまじっすか?

272 名前:デフォルトの名無しさん (ワッチョイ 292c-cvBQ) mailto:sage [2020/03/19(木) 13:04:35 ID:JDU05jIv0.net]
Ruby・Groovy は似てる。
JavaScript, jQuery, Kotlin は、メソッドチェーン中心で、Rubyに似せてきてる

サーバー側のNode.js は、Rubyのコピー。
npm(node package manager), yarn は、Bundler のコピー

CakePHP, Spring Boot は、Rails のコピー。
だから、流行った

Rails がサーバー側の標準。
だから、RubyからLinux とか、サーバー側へ進む人が多い

273 名前:デフォルトの名無しさん (ドコグロ MM95-u5rl) mailto:sage [2020/03/19(木) 13:10:40 ID:TVS3Wm7/M.net]
>>262
RubyはRails Scriptとして使うだけならさほど難しくはないが純粋に言語としては極めて複雑な部類で、
Rubyを理解した、と自信を持って言えるレベルならJavaScriptなどもはや楽勝

274 名前:デフォルトの名無しさん mailto:sage [2020/03/19(木) 13:16:56.47 ID:Twc2892j0.net]
>>262
Rubyを覚えれば
Pythonはだいたい理解できる

JavaScriptはちょっと理解できる
クセがある部分が多いから

まあ2015でクラス構文が入って
だいぶマシになったけど



275 名前:デフォルトの名無しさん (ワッチョイ 13a5-TOPM) mailto:sage [2020/03/19(木) 13:49:34 ID:PJNEdIzn0.net]
クラスが入っただけでマシになった、ってことか?

276 名前:デフォルトの名無しさん (ワッチョイ 292c-cvBQ) mailto:sage [2020/03/19(木) 14:07:04 ID:JDU05jIv0.net]
JavaScript のクラス構文

class Card {
constructor( number ) { this.number = number }
}

let cards = [ ]

for ( let count = 1; count <= 5; count++ ) {
cards.push( new Card( count ) )
}

console.log( cards.map( x => x.number ) ) //=> [ 1, 2, 3, 4, 5 ]

277 名前:デフォルトの名無しさん (オッペケ Sr85-NT4g) mailto:sage [2020/03/19(木) 16:59:22 ID:88pUuzIXr.net]
JavaScriptはクラス定数すら定義できないからな
最近のはしらんが

278 名前:デフォルトの名無しさん mailto:sage [2020/03/19(木) 17:00:49.00 ID:DXn00lXA0.net]
Pythonはうんこだが、Rubyのメソッドチェーンも今となってはゴミの部類で
パイプライン演算子こそが正解

279 名前:デフォルトの名無しさん [2020/03/19(木) 17:26:29.02 ID:yS5RdDEsF.net]
codepad.org/DO0Yq0CS
codepad.org/jmDGu9SR

280 名前:デフォルトの名無しさん (ワッチョイ 1161-44a/) mailto:sage [2020/03/20(金) 00:53:19 ID:405ti7Ej0.net]
>>264
JS は、promise, then, async, waitUntil, ServiceWorker(PWA)などの部分がかなり難しく感じる。
event の bubbling phase, capture phase, target phase と絡んで
cancelBubble, stopPropagation, preventDefault
の話も正確に理解するのはなかなか難しい。

281 名前:デフォルトの名無しさん (ワッチョイ 1161-44a/) mailto:sage [2020/03/20(金) 00:56:41 ID:405ti7Ej0.net]
event.waitUntil()
event.respondWith()
はいまだにちゃんと理解できてない。
ServiceWorkerのWorker Lifecycleも物凄く理解が難しい。

282 名前:デフォルトの名無しさん mailto:sage [2020/03/20(金) 01:05:01.24 ID:405ti7Ej0.net]
さらに、Blob の概念も独特で難しい気がする。

283 名前:デフォルトの名無しさん mailto:sage [2020/03/20(金) 01:07:27.55 ID:405ti7Ej0.net]
これも理解できない。
誰かに教えてほしい。

addEventListener('fetch', event => {
// Prevent the default, and handle the request ourselves.
event.respondWith(async function() {
// Try to get the response from a cache.
const cachedResponse = await caches.match(event.request);
// Return it if we found one.
if (cachedResponse) return cachedResponse;
// If we didn't find a match in the cache, use the network.
return fetch(event.request);
}());
});

284 名前:デフォルトの名無しさん mailto:sage [2020/03/20(金) 01:51:15.32 ID:b2ihZgLg0.net]
>>271
その中で言語の要素はpromise/then/async



285 名前:フ3つだけ
それも全部Promise

言語とフレームワーク/APIは分けて捉えないと
RubyとRailsを混同してるのと同じ
[]
[ここ壊れてます]

286 名前:デフォルトの名無しさん mailto:sage [2020/03/20(金) 01:54:59.68 ID:405ti7Ej0.net]
>>275
でも今のJSでPromiseを避けて済ますことは難しい。
特にPWAのHelloWorld的なプログラムで>>274のように、
Promise, async, await, respondWith などの難しいが概念が同時に出てきてしまい、挫折してしまう可能性が高い。
やりたいことは単に、ウェブアプリのアイコンをホーム画面に出したいだけだと言うのに。

287 名前:デフォルトの名無しさん mailto:sage [2020/03/20(金) 09:01:29.50 ID:CQQp7Y750.net]
jQuery でも基本は、Promise。
成功・失敗時の処理を書けばよい

async/await は、非同期を同期的に書ける。
内側にネストしないように書ける

288 名前:デフォルトの名無しさん mailto:sage [2020/03/20(金) 10:07:25.86 ID:IqcuAu3DM.net]
>>276
>でも今のJSでPromiseを避けて済ますことは難しい。

言語が提供する機能とそれ以外を区別しろって言われてこれかよw
Promiseが理解できないのも納得

289 名前:デフォルトの名無しさん mailto:sage [2020/03/20(金) 10:14:58.61 ID:u1wBzCgK0.net]
>>276
× でも今のJSでPromiseを避けて済ますことは難しい。
○ 非同期プログラミングをするならどの言語でも一緒
GUI関連は大抵の言語で非同期処理をする
要するに画面の描画をブロックしてはいけないからだ。

RubyはそもそもGUIとかでてこないから
使わないだけ

290 名前:デフォルトの名無しさん mailto:sage [2020/03/20(金) 11:04:22.80 ID:405ti7Ej0.net]
>>279
例えば、Win32APIなど非同期処理もMSDNを読めばちゃんと理解できる。
ところが、Promiseは公式サイトが何を言っているのか分からないので
99%の人が理解できない。

291 名前:デフォルトの名無しさん [2020/03/20(金) 11:30:29.28 ID:nAHhYb7gF.net]
馬鹿除けにちょうど良い機能やん

292 名前:デフォルトの名無しさん mailto:sage [2020/03/23(月) 10:55:32.08 ID:mWzqBLYF0.net]
jsは伝統的にコールバックをやってきたというのを知っていないと理解は難しいかもね
promiseはコールバック地獄の救世主だからそれなしでは語れない
イベント系はもともとクリックされたらみたいなこととこから始まってるのを知ってないとイメージがつかめないだろうな

293 名前:デフォルトの名無しさん mailto:sage [2020/03/23(月) 10:59:24.89 ID:7lDoSnDw0.net]
Cをみりゃ分かる
コールバック地獄の救世主なんていない
まやかしだ

294 名前:デフォルトの名無しさん [2020/03/24(火) 12:55:54.95 ID:n56XI6Ab0.net]
Windows 10, WSL, Ubuntu 18.04 を起動して、ユーザーのホームディレクトリで、
Ruby のバージョンマネージャーのrbenv-installer を実行したけど、

rbenv / rbenv-installer
https://github.com/rbenv/rbenv-installer/blob/master/bin/rbenv-installer

これの34行目
rbenv="$(command -v rbenv ~/.rbenv/bin/rbenv | head -1)"

rbenv は、初回は空文字列だが、インストール後には、rbenv となる

38行目
cd "${rbenv%/*}"

これは、cd rbenv するが、rbenv というディレクトリは存在しないのでエラーになる!
.rbenv なら存在するけど

51行目
git pull --tags origin master

なので、git pull されない

この38行目は、バグなのかな?



295 名前:284 mailto:sage [2020/03/24(火) 13:30:12.20 ID:n56XI6Ab0.net]
rbenv-installer の間違いの訳ないよな。
漏れの手順・環境がおかしいのか

初回はホームディレクトリで実行して、
インストール後はホームディレクトリではなく、~/.rbenv ディレクトリで、実行するのかな?

eval "$(rbenv init -)"
してるけど、まだどのバージョンも入れていないから、
rbenv というディレクトリは存在しないのかも?

バージョンを入れたら、rbenv というディレクトリが作られるのかも?

296 名前:デフォルトの名無しさん [2020/03/24(火) 13:32:10.90 ID:WT9cP8p50.net]
文句言う前に
VMでも何でも良いから
素の生インスコ環境造って
他の影響を排除してみ

297 名前:デフォルトの名無しさん (ワッチョイ 8b14-9KJh) mailto:sage [2020/03/24(火) 15:16:18 ID:fj9Tix3R0.net]
>>284
知らんけどさぁ。そのコードだけ見て判断するなら
> rbenv="$(command -v rbenv ~/.rbenv/bin/rbenv | head -1)"

まずrbenvには普通はコマンドのフルパスが入る。
二番目の~/.rbenv/bin/rbenvはわかりやすく、そこにrbenvコマンドがあればそのパス
一番目は、rbenvコマンドをPATHから検索して見つかったものが入る。だから本来はフルパス
38行目の cd "${rbenv%/*}" からもフルパスが入ってるという前提で
rbenvコマンドがある前提でそのディレクトリに移動しようとしている。

もし本当に rbenv変数に rbenv という文字列が入るとしたら
おそらく rbenvがシェル関数の場合だろう。

rbenvというシェル関数は、実は rbenv を使用していると作られる。
正確には eval "$(rbenv init -)" の実行時に定義されている。

しかし rbenv-installer は別コマンドだ、現在のシェルで定義しているシェル関数の rbenv が
呼び出したrbenv-installerという子プロセスから見つかるはずがない。

この前提が崩れるとしたら、
1. rbenv-installer を . コマンド (または source コマンド)で呼び出している。
意図的にやらない限り、そうはならないし、やってるのだから気づくだろう。

そしてもう一つ。
2. rbenvシェル関数がexport -fされている場合だ。通常exportできるのは変数だけなのだが
bashの変な機能で関数もexportできて、それを子プロセス(当然bashに限る)から参照できてしまう。
envコマンドで環境変数一覧を表示してみれば、BASH_FUNC_rbenvという特殊な名前で
rbenvシェル関数のコードが環境変数に設定されてるのが見えないか?だとしたらそれが原因だ。
普通は関数をexportしてるはずがないんだが、どこかでなにかのついで全シェル関数をexportとかやってないか?

3. もしくはBASH_ENV環境変数を使ってないか?これはbash起動時に自動的に
シェルスクリプトを実行するための変数だ、そこでrbenvシェル関数を定義していたりしないか?

298 名前:デフォルトの名無しさん mailto:sage [2020/03/24(火) 15:26:44.36 ID:fj9Tix3R0.net]
まあバグとまでは言わんけど、対応漏れとして / で始まらないものは
シェル関数として省くとかすれば対応は可能かもしれんなぁ。
それ周りの解決法は調べた事ないので、どうするのがベストなのかしらんけど

299 名前:284 mailto:sage [2020/03/24(火) 17:01:58.24 ID:n56XI6Ab0.net]
rbenv のトップページを参考にして、実行した
https://github.com/rbenv/rbenv

Basic GitHub Checkout の所で、rbenv-installer を使った。
すると、git clone で、~/.rbenv の下に、ローカルリポジトリが出来た

次に、~/.bashrc (漏れは、~/.bash_aliases)に、下の2行を追加したので、
常に、bash 起動時には、eval "$(rbenv init -)" が実行される

export PATH="$HOME/.rbenv/bin:$PATH"
eval "$(rbenv init -)"

>>287
1. rbenv-installer は、1回やっただけです。
2. BASH_FUNC_rbenv は無いです。
3. BASH_ENV という環境変数も無いです

which rbenv とすると、環境変数PATH に、~/.rbenv/bin を追加しているから、
~/.rbenv/bin/rbenv

確かに、38行目の、cd "${rbenv%/*}" は、rbenv 変数の、最初の/ 以下を削除するから、
パスが入っている事を想定しているのかも?

ただ、2回目以降に、rbenv-installerを実行した場合に、
51行目のgit pull --tags origin master で、
リモートリポジトリから最新を取得するように書いてあるから、
38行目の、cd "${rbenv%/*}" で、エラーになると、51行目へたどり着けないかなと思って

まあ、まだどのバージョンも入れていないから、
バージョンを入れたら、rbenv 変数にパスが入ってくるのかも知れない。
こんなに有名なアプリに、こんな単純なバグがあるとは思えないし、漏れの勘違いでしょう

300 名前:デフォルトの名無しさん (ワッチョイ 0dad-OG1y) mailto:sage [2020/03/28(土) 22:49:31 ID:413BE/qa0.net]
たのしいRuby第5版の古本買ったのでRuby入門します(^_^)/

301 名前:デフォルトの名無しさん [2020/03/28(土) 23:25:45.38 ID:lv ]
[ここ壊れてます]

302 名前:HGCPQW0.net mailto: Windows 10, WSL, Ubuntu 18.04 で、
rbenv で、Ruby 2.6.5 をインストールできた!

CPU-i3 を省エネモード(1コアのみ)で使っていたから、
コンパイルには、25分掛かった

build-essential, openssl, readline, zlib のパッケージが必要だった

sudo apt install -y build-essential
sudo apt-get install -y libssl-dev libreadline-dev zlib1g-dev
[]
[ここ壊れてます]

303 名前:デフォルトの名無しさん mailto:sage [2020/04/01(水) 03:54:14.10 ID:PTOn+beS0.net]
VScodeでRuby実行環境作ったけど楽しいは!
サクサク動かして試せる!

304 名前:デフォルトの名無しさん [2020/04/01(水) 05:08:16.41 ID:T/a2Vy7O0.net]
Windows 10, WSL, Ubuntu 18.04 で、
rbenv で、Ruby 2.6.5 をインストールできた!

VSCode のRemote WSL もあるから、改行コードさえ気を付ければ、
Windows側のVSCodeで、Linux側のRubyを動かせる

今までは、WSL のUbuntu アプリを起動して、vim を使ったり、
コマンドプロンプト・PowerShell で、wsl と入力していたけど

RubyInstaller for Windows, MSYS2/MINGW も、いらなくなるかも



305 名前:デフォルトの名無しさん mailto:age [2020/04/01(水) 05:23:37.67 ID:d9NDYWBE0.net]
インスタンスがどれで変数の型がどれでオブジェクトはどれってごっちゃになってわからないのですが
class A=new A() インスタンスはこの行全てを指すのですか?     

306 名前:デフォルトの名無しさん (オッペケ Sr01-KN+/) mailto:sage [2020/04/01(水) 07:10:14 ID:uldFLeaHr.net]
まず日本語の勉強から始めろ

307 名前:sage [2020/04/01(水) 08:45:05.94 ID:Y4BtYbUm0.net]
まず、そもそも class A=new A() は Ruby の文法として完全に誤りだ

Ruby では、クラス A を定義するなら、class A; … ; end と書く
同様に、クラス A からインスタンスを生成して変数 a に代入するには a = A.new と書く

プログラミングが初めてであればオブジェクト指向の概念がゴッチャになるのは
しかたないとはいえ、それ以前にプログラミングの基本から学んだほうが良いと思うよ

308 名前:デフォルトの名無しさん mailto:sage [2020/04/01(水) 09:07:03.23 ID:T/a2Vy7O0.net]
ひとまずこれで、クラスA を定義して、その設計書に基づき、
インスタンス・実体a・b を作った

クラス内に、変数・関数を定義していけば、より本格的なクラスになっていく

class A
end

a = A.new
b = A.new

309 名前:デフォルトの名無しさん [2020/04/01(水) 11:18:53.70 ID:5VJq6KKKF.net]
a = (class A; end).new
とかあるんだっけ

310 名前:デフォルトの名無しさん mailto:sage [2020/04/01(水) 14:38:45.50 ID:8LLFjcSO0.net]
>>294
Rubyにおいてはすべてがオブジェクトなので
変数の型はクラスだと考えてよい
(他言語はそうとは限らない)

インスタンスは個別の状態(変数)を持ったもので
「オブジェクト」という言葉は文脈によって
クラスとインスタンスの両方の意味で用いられる

よくある喩えで言うと人間はクラスで
太郎や花子がインスタンス
太郎と花子はどちらも人間(クラス)だけど
個々の状態(性別や年齢などの変数)は異なる

とりあえずの回答としてはざっとこんなもんだが
オブジェクト指向を本格的に習得したいなら
本で勉強する必要があるだろう

311 名前:デフォルトの名無しさん (ワッチョイ 558f-q/Tg) mailto:sage [2020/04/01(水) 16:10:35 ID:nPBcGZ1y0.net]
1はIntegerクラスのインスタンス
“abc”はStringクラスのインスタンス
[1,2,3]はArrayクラスのインスタンス

Integer, String, ArrayはClassクラスのインスタンス
ClassもClassクラスのインスタンス

312 名前:デフォルトの名無しさん (ワッチョイ 1b8c-CgtG) mailto:sage [2020/04/01(水) 21:25:17 ID:XvdBTC2x0.net]
オブジェクトを使った例文もプリーズ

313 名前:299 mailto:sage [2020/04/01(水) 22:04:08.48 ID:8LLFjcSO0.net]
class Human
attr_reader :age, :sex

def initialize(age, sex)
@age = age
@sex = sex
end
end

taro = Human.new(24,'man')
hanak

314 名前:o = Human.new(18, 'woman')

p taro.age
p taro.sex
p hanako.age
p hanako.sex
[]
[ここ壊れてます]



315 名前:299 (ワッチョイ e5ad-KN+/) mailto:sage [2020/04/01(水) 22:07:05 ID:8LLFjcSO0.net]
>>299
>>302
文章説明したこと(だけ)の
サンプルコード

同じHumanクラスだが
インスタンスとして
taroとhanakoは異なる

インスタンス変数ageとsexも
インスタンスごとに
異なった状態になっている

それだけのことだけど基本中の基本

316 名前:284 [2020/04/02(木) 12:07:15.86 ID:BA8GpIv40.net]
>>284
疑問が解決しました!

>rbenv="$(command -v rbenv ~/.rbenv/bin/rbenv | head -1)"
>rbenv は、初回は空文字列だが、インストール後には、rbenv となる

bash スクリプトを実行すると、rbenv には、~/.rbenv/bin/rbenv が入ってきて、正常に処理されます。
これを端末で実行すると、rbenv が出力されるので、挙動が違ってくるだけでした!
思わぬ、引掛けw

y="$(command -v rbenv ~/.rbenv/bin/rbenv | head -1)"
echo $y
rbenv

x="$(command -v rbenv ~/.rbenv/bin/rbenv | head -2)"
echo $x
rbenv ~/.rbenv/bin/rbenv

その後、cd "${rbenv%/*}"
で、~/.rbenv/bin へ移動します

なので、51行目で、git pull されます

317 名前:デフォルトの名無しさん mailto:sage [2020/04/02(木) 12:56:23.11 ID:qWu3pHo10.net]
いみがまったくわからんどうでもいいや

318 名前:デフォルトの名無しさん [2020/04/02(木) 13:56:36.20 ID:vZC8Eo+WH.net]
simulationライブラリで純粋な関数式プログラミングをする
ttp://x0000.net/topic.aspx?id=3631-0

UIライブラリ (C#, 2D) を作ったよ
ttp://x0000.net/topic.aspx?id=3688-0

学術の巨大掲示板群 - アルファ・ラボ
ttp://x0000.net

数学 物理学 化学 生物学 天文学 地理地学
IT 電子 工学 言語学 国語 方言 など

319 名前:284 mailto:sage [2020/04/02(木) 14:07:46.77 ID:BA8GpIv40.net]
これを、bash スクリプト内に書いて、スクリプトを実行すると、

xxx="$(command -v rbenv)"
yyy="$(command -v ~/.rbenv/bin/rbenv)"
zzz="$(command -v rbenv ~/.rbenv/bin/rbenv)"

xxx, yyy も、~/.rbenv/bin/rbenv で、
zzz も、同じものが2行表示されるけど、これを端末で直接実行すると、

xxx は、rbenv
yyy は、~/.rbenv/bin/rbenv
zzz は、rbenv, ~/.rbenv/bin/rbenv の2行

xxx では、rbenv のパスが入って来ない!

which rbenv と入力すると、ちゃんとパスが表示されるのだけど、
~/.rbenv/bin/rbenv

bash スクリプト内に書いて、それを実行した時と、
端末に直接入力した時では、結果が異なる!

それで漏れが勘違いしたという話ですw

320 名前:デフォルトの名無しさん (ワッチョイ a301-51IN) mailto:sage [2020/04/02(木) 14:48:16 ID:s8KkhiHc0.net]
>>304

>>287に書いてたよね

>しかし rbenv-installer は別コマンドだ、現在のシェルで定義しているシェル関数の rbenv が
>呼び出したrbenv-installerという子プロセスから見つかるはずがない。

321 名前:デフォルトの名無しさん mailto:sage [2020/04/02(木) 15:03:21.14 ID:Jw7S0ezcr.net]
車輪の再発名というか糞の再生産というか

322 名前:デフォルトの名無しさん [2020/04/02(木) 18:25:33.41 ID:4X8ewqwSF.net]
Ruby信者が別のRuby信者を何人感染させるか
1を下回ってると思う

323 名前:デフォルトの名無しさん (ワッチョイ 4b2c-AHN4) [2020/04/03(金) 12:39:37 ID:tv+k2Xei0.net]
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

324 名前:284 (ワッチョイ 4b2c-AHN4) mailto:sage [2020/04/03(金) 13:04:09 ID:tv+k2Xei0.net]
>>307
の話題は、シェルスクリプトのスレへ移動しました!

シェルスクリプト総合 その33
https://mevius.5ch.net/test/read.cgi/tech/1584893550/56-60



325 名前:デフォルトの名無しさん (ワッチョイ a301-51IN) mailto:sage [2020/04/03(金) 14:05:19 ID:q/cvlU880.net]
>>311
pry> "20".ljust(3, "0")
=> "200"
pry> "20".rjust(3, "0")
=> "

326 名前:020"

Stringのメソッドに目的のものがないかどうかを最初に探そう
https://docs.ruby-lang.org/ja/latest/class/String.html
[]
[ここ壊れてます]

327 名前:デフォルトの名無しさん (ワッチョイ 15e6-20Ab) mailto:sage [2020/04/03(金) 16:23:36 ID:CpQ2Rjn20.net]
"%03d" % "02" # "002"

では、何か不味いのか

328 名前:311 (ワッチョイ 4b2c-AHN4) mailto:sage [2020/04/03(金) 17:00:52 ID:tv+k2Xei0.net]
0 で始まる文字列は、8進数と解釈されるのか、08, 09 などでエラーになる!

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

>>313
ありがとう

329 名前:デフォルトの名無しさん mailto:sage [2020/04/03(金) 17:22:43.70 ID:Tlqo6QWT0.net]
"%03d" % "08".to_i #=> "008"

330 名前:311 mailto:sage [2020/04/03(金) 18:14:05.62 ID:tv+k2Xei0.net]
先頭から続く、0 は鬼門!
それらを除去したい。よい方法は?

0080 → 80
123 → 123

"" → ""
000 → ""

331 名前:デフォルトの名無しさん mailto:sage [2020/04/03(金) 18:26:24.61 ID:q/cvlU880.net]
>>317
>000 → ""
“000”のleading zeroを除くと“0”では?

332 名前:311 mailto:sage [2020/04/03(金) 18:51:12.37 ID:tv+k2Xei0.net]
先頭から続くかぎり、除去するので、これで良いです。
000 → ""

これは、自作するのは難しい。
プログラミングのお題に出してみようか

333 名前:デフォルトの名無しさん mailto:sage [2020/04/03(金) 18:59:52.23 ID:q/cvlU880.net]
そっか、じゃ正規表現だね

"000".sub(/^0+/, "") #=> ""
"123".sub(/^0+/, "") #=> "123"
"0080".sub(/^0+/, "") #=> "80"

334 名前:311 (ワッチョイ 4b2c-AHN4) mailto:sage [2020/04/03(金) 19:02:21 ID:tv+k2Xei0.net]
>>319
修正

0 → ""
000 → ""

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

0・000 → 0



335 名前:デフォルトの名無しさん (オッペケ Sr01-KN+/) mailto:sage [2020/04/03(金) 19:52:06 ID:MoLJYTUlr.net]
なんやこのガキ

336 名前:311 (ワッチョイ 4b2c-AHN4) mailto:sage [2020/04/03(金) 20:00:56 ID:tv+k2Xei0.net]
プログラミングのお題の方に書き込んだので、このスレから移動してください!






[ 続きを読む ] / [ 携帯版 ]

前100 次100 最新50 [ このスレをブックマーク! 携帯に送る ] 2chのread.cgiへ
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧](;´∀`)<307KB

read.cgi ver5.27 [feat.BBS2 +1.6] / e.0.2 (02/09/03) / eucaly.net products.
担当:undef