Questions tagged [ruby]

Rubyはマルチプラットフォームで動作するオブジェクト指向のインタプリタ言語。1993年にまつもとゆきひろ氏(Matz)が開発した。

リンク

1167 questions
15
votes
3 answers

rubyで衝突しないユニークな文字列を生成するには?

ユーザがアップロードしたファイルのファイル名を決定する際、ファイル名が衝突しないように 現在時刻(ミリ秒)からIDを発行するという方法を思いつきました。 色々ためしてみて、下記のコードが完成したのですが、現在時刻の数値を62進数に変換しただけなので「p2dhXa6」や「p2d9Wco」のようにファイルの先頭文字がほぼp2で固定されてしまいます。 このままでも良いのですが、ファイル名で利用出来る文字を使って、衝突しないユニークかつ視覚的にもランダムであり、文字列長がより短いIDを生成する方法はござ…
hojo
  • 1,175
  • 3
  • 15
  • 27
12
votes
3 answers

Rubyで簡潔にeachなどの機能を持つクラスを実装する方法

例えば、フィボナッチ数列(0, 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144, 233, 377, 610, 987, 1597, 2584, 4181, 6765, 10946 ..)を作るようなクラスを作りたいとして、下のようなコードを書いたとします。 class Fibonacci def initialize(n) @n = n @f1 = 1 @f0 = 0 end def to_a …
esehara
  • 1,383
  • 1
  • 13
  • 26
10
votes
3 answers

Rubyで文字列と数字が混在している配列をソートする方法を教えてください

要素として文字列と数字が混在している配列があります。 これをすべて数字順に並べ替えたいのですが、どうしたらよいでしょうか? たとえば、以下のような配列があったとします。 ["123", 200, "12", 85] これを次のように並び替えたいです。 ["12", 85, "123", 200]
Junichi Ito
  • 6,641
  • 3
  • 21
  • 38
9
votes
4 answers

File.exist? の引数が nil だった時に nil または false を返す方法

File.exist?でファイルの存在確認をするときに引数がnilの可能性があれば File.exist?(filename) if…
ironsand
  • 3,557
  • 2
  • 31
  • 73
9
votes
4 answers

rubyの配列の演算 [*arr1 + arr2] の仕組みが分からない

arr1 = ["1","2"] arr2 = ["3","4"] [*arr1 + arr2] #=> ["1","2","3","4"] となります. Array#+ のソースも覗いてみましたがなぜこうなるのかわかりませんでした. どのようなプロセスでこのような結果が返ってくるのか, よろしければ教えていただけませんか.
chikyukotei
  • 311
  • 2
  • 10
9
votes
1 answer

rubyの組み込みメソッドがスレッドセーフか否かについて

以下のrubyのコードがrubyのバージョンによって挙動が違います。 これについて、公式のドキュメントはありますでしょうか? また、組み込みメソッドがスレッドセーフかどうかは何を参照すれば良いでしょうか? THREAD_NUM = 3 Array.new(THREAD_NUM) do Thread.new do 10.times do puts "hoge" end end end.each(&:join) puts…
Isuke FUJIYAMA
  • 344
  • 1
  • 10
9
votes
3 answers

Rubyでインスタンスメソッドとして利用するためのModuleのメソッドを簡単にテストする方法

例えば、以下のようなコードがあったとします。 module Foo def bar(i) i + 1 end end class Bar attr_accessor :some_value include Foo def initialize(any_value) @some_value = bar(any_value) …
esehara
  • 1,383
  • 1
  • 13
  • 26
8
votes
5 answers

Rubyでアルファベットのみの26進数をつくりたい

Rubyでアルファベットだけの26進数をつくりたいのですがどうしたらよいのでしょうか。 integer.to_s(26) にすると数字とアルファベットの組み合わせになってしまいます。
user5855
  • 1,453
  • 6
  • 23
  • 34
8
votes
1 answer

コマンドプロンプトでの改行

プログラミング超初心者で、Rubyを勉強しています。 とある本のタスクを3つまで設けられるToDo_listを作る例題をやっています。 サクラエディタでコードを書き、コマンドプロンプトで実行しています。 コマンドプロンプトで実行中に、1つ目のタスクをひらがな入力しenterを押しても 2つ目のモード選択に行かず改行になってしまい、もう一度enterを押すと表示されていなかった2つ目のモード選択で入力せずenterを押したと判断され、設定したエラーになってしまいます。半角英数でタスク設定をするとう…
YG_Ruby
  • 89
  • 6
7
votes
1 answer

1/0 + 1 と 1./0 + 1 の演算結果が異なるのはなぜ?

Ruby2.7.1を使用しています。 .を使用した際の動作の違いについて、教えて頂けないでしょうか? 具体的には、以下のような演算の際に異なる結果が出力されます。 1/0 + 1 # => ZeroDivisionError (divided by 0) 1./0 + 1 # => 1 1./0 + 1 + 1./0 + 1 # => SyntaxError Rubyのリファレンスマニュアル…
ginga
  • 73
  • 4
7
votes
1 answer

require_relative はなぜあまり使われない?

ruby で gem の開発をしているとします。 gem の開発なので、以下のようなスタンダードなフォルダ構成になっているとします。 % tree . ├── Rakefile ├── bin │ └── hola ├── hola.gemspec ├── lib │ ├── hola │ │ └── translator.rb │ └── hola.rb └── test └── test_hola.rb この際、 lib/hola.rb から…
Yuki Inoue
  • 16,805
  • 19
  • 80
  • 196
7
votes
2 answers

Ruby をインストールせずに Ruby を使える環境にするためには?

【環境】CentOS7.2 Linux環境にて、RubyをインストールせずにRubyを使える環境にさせるにはどのような方法があるでしょうか? Rubyのスクリプトで書かれた hoge.rb というスクリプトを作成したのですが、相手の環境には Ruby がなく実行出来ません。 相手の環境に Ruby をインストールしてもらえればいいのですが、こだわりがあるらしくRubyは入れたくない!依存関係が~という良くわからない理由があるため困っております。 ただ、fluentdなどを例にみると…
Ezreal
  • 553
  • 4
  • 13
7
votes
4 answers

Arrayが期待される変数同士を足し合わせるとき、片方がnilの可能性がある場合の書き方

Array同士を足し合わせるときに、+…
esehara
  • 1,383
  • 1
  • 13
  • 26
7
votes
5 answers

インスタンス変数を参照したら,また初期化したい

例えば以下のクラスCでsayメソッドを使ったら インスタンス変数@dはnilで初期化されています. このメソッドは3行にわたって書いており, もうすこしスマートに書けないかと悩んでいます. すでに機能的には充足されていますが, rubyらしく書くためにはどう工夫すればよいでしょうか class C def initialize @d = "hello" end def say result = @d @d = nil result …
Akira Noguchi
  • 311
  • 2
  • 7
6
votes
1 answer

JSON.load と JSON.parse の違いは何ですか?

Ruby の JSON モジュールには JSON を読み込むためのメソッドとして load と parse が用意されています。 両者は用途が殆ど同じように見えるのですが、何かしら大事な挙動の違いや使い分けがあるのでしょうか? 「こういうときはこちらを使った方が良い」というのはありますか? パッと見では load の方が高機能に見えるのですが parse…
nekketsuuu
  • 23,683
  • 11
  • 50
  • 115
1
2 3
19 20