タグ付けされた質問 「ruby」

Rubyは、マルチプラットフォームのオープンソースの動的オブジェクト指向インタープリタ言語であり、1995年に松本幸宏(Matz)によって作成されました。[ruby]タグは、Ruby言語に関連する質問(構文やライブラリなど)を対象としています。Ruby on Railsの質問は[ruby-on-rails]でタグ付けする必要があります。

25
初心者に警告すべきRuby Gotchasとは何ですか?[閉まっている]
現在のところ、この質問はQ&A形式には適していません。私たちは回答が事実、参考文献、専門知識によってサポートされることを期待しますが、この質問はおそらく議論、議論、投票、または拡張された議論を誘います。この質問が改善され、場合によっては再開できると思われる場合は、ヘルプセンターにアクセスしてください。 8年前に閉鎖。 私は最近Rubyプログラミング言語を学びましたが、全体としてそれは良い言語です。でも、思ったほど簡単ではなかったのでびっくりしました。より正確には、「最小サプライズのルール」は私にはあまり尊重されていないように見えました(もちろんこれはかなり主観的です)。例えば: x = true and false puts x # displays true! そして有名な: puts "zero is true!" if 0 # zero is true! Rubyの初心者に警告する他の "Gotchas"は何ですか?
108 ruby 


14
2つのハッシュを比較するにはどうすればよいですか?
次のコードを使用して、2つのRubyハッシュを比較しようとしています。 #!/usr/bin/env ruby require "yaml" require "active_support" file1 = YAML::load(File.open('./en_20110207.yml')) file2 = YAML::load(File.open('./locales/en.yml')) arr = [] file1.select { |k,v| file2.select { |k2, v2| arr << "#{v2}" if "#{v}" != "#{v2}" } } puts arr 画面への出力は、file2からの完全なファイルです。ファイルが異なることは事実ですが、スクリプトはそれを取得しないようです。
108 ruby  hash 

17
Railsでデフォルト値を設定するにはどうすればよいですか?
Railsでオブジェクトのデフォルト値を設定する最良の方法を見つけようとしています。 私が考えることができる最高のことは、デフォルト値を new方法は、コントローラーのメソッドに。 これが許容できる場合、またはそれを行うより良い方法がある場合、誰かが何か入力を持っていますか?

9
Rubyのプライベートモジュールメソッド
2つの質問があります ベストプラクティス 公開インターフェースを使用してデータ構造に対して何らかの操作を実行するアルゴリズムがあります 現在、多数の静的メソッドを持つモジュールであり、1つのパブリックインターフェイスメソッドを除いてすべてプライベートです。 すべてのメソッド間で共有する必要があるインスタンス変数が1つあります。 これらは私が見ることができるオプションです、どれが最高ですか?: モジュールの静的(ルビーで「モジュール」)を持つメソッド 静的メソッドを持つクラス データ構造に含めるMixinモジュール そのデータ構造(非常に小さい)を変更するアルゴリズムの部分をリファクタリングし、アルゴリズムモジュールの静的メソッドを呼び出すミックスインを作成します。 テクニカルパーツ プライベートModuleメソッドを作成する方法はありますか? module Thing def self.pub; puts "Public method"; end private def self.priv; puts "Private method"; end end privateそこには何ら影響を与えていないようです私はまだ呼び出すことができ、Thing.priv問題なく。

11
Ruby / Rails-値を変更せずに、時間のタイムゾーンを変更します
と属性fooを持つデータベースにレコードが:start_timeあり:timezoneます。 :start_time- UTC時間である2001-01-01 14:20:00例えば、。:timezone-文字列ですAmerica/New_Yorkたとえば、。 の値を持つ新しいTimeオブジェクトを作成したい:start_timeが、そのタイムゾーンはによって指定されている:timezone。Railsは賢く、UTCからの時間をそのタイムゾーンと一致するように更新:start_timeするため:timezone、をロードしてからに変換したくありません。 現在、 t = foo.start_time => 2000-01-01 14:20:00 UTC t.zone => "UTC" t.in_time_zone("America/New_York") => Sat, 01 Jan 2000 09:20:00 EST -05:00 代わりに、私は見たいです => Sat, 01 Jan 2000 14:20:00 EST -05:00 すなわち。私はやってみたいです: t => 2000-01-01 14:20:00 UTC t.zone = "America/New_York" => "America/New_York" t => 2000-01-01 14:20:00 EST

9
MacでRubyを1.9.xに更新する方法
Macで新しいユーザーアカウントを作成し、Snow Leopardのデフォルトの1.8.7から現在のバージョンのRuby(1.9.2)に更新しようとしています。誰かがチュートリアルを教えたり、私のMacのRubyを1.8から1.9.2に更新するための最良の方法を説明したりできますか?ありがとう
107 ruby  macos  installation 

2
Railsモジュールのmattr_accessorとは何ですか?
Railsのドキュメントではこれを実際に見つけることはできませんでしたが、'mattr_accessor'は通常のRuby クラスの'attr_accessor'(getter&setter)のモジュールの結果のようです。 例えば。クラスで class User attr_accessor :name def set_fullname @name = "#{self.first_name} #{self.last_name}" end end 例えば。モジュール内 module Authentication mattr_accessor :current_user def login @current_user = session[:user_id] || nil end end このヘルパーメソッドはActiveSupportによって提供されます。

15
「バンドラーが見つかりませんでした」エラー
実行しようとするbundler updateと、次のエラーが発生します。 .rvm/rubies/ruby-1.9.2-p180/lib/ruby/site_ruby/1.9.1/rubygems/dependency.rb:247:in `to_specs': Could not find bundler (>= 0) amongst [rake-0.8.7, rake-0.8.7, rubygems-update-1.8.4] (Gem::LoadError) Rubyは初めてですが、何が原因なのか教えてもらえますか?Rake 0.8.7がインストールされています。

13
Rubyサポート付きのvimのインストール(+ ruby​​)
vimにcommand-tをインストールしようとしていますが、現在のバージョンのvimには(+ ruby​​)フラグがありません。コマンド「which ruby​​」は、rubyがインストールされていることを示します。 vimで+ ruby​​フラグをアクティブにするために何をする必要がありますか? また、+ ruby​​フラグは技術的にどういう意味ですか?
107 ruby  vim 

4
Hash.new([])などのHashのデフォルト値を使用すると、奇妙な予期しない動作(値の消失/変更)
このコードを考えてみましょう: h = Hash.new(0) # New hash pairs will by default have 0 as values h[1] += 1 #=> {1=>1} h[2] += 2 #=> {2=>2} それで問題ありませんが、 h = Hash.new([]) # Empty array as default value h[1] <<= 1 #=> {1=>[1]} ← Ok h[2] <<= 2 #=> {1=>[1,2], 2=>[1,2]} ← Why …
107 ruby  hash 

5
RubyでCtrl-cをキャプチャする
長期間実行されているレガシーRubyプログラムに合格しました。 begin #dosomething rescue Exception => e #halt the exception's progress end それを通して。 これらが処理する可能性のあるすべての例外を(少なくともすぐにではなく)追跡することなく、で時々それをシャットダウンできるようにしたいと思いCtrlCます。 そして、私はコードに追加するだけの方法でそうしたいと思います(そのため、既存の動作に影響を与えたり、実行中に途中でキャッチされた例外を見逃したりしません)。 [ CtrlCはSIGINT、つまりSystemExitでありSignalException.new("INT")、Rubyの例外処理システムと同等のようです。class SignalException < Exception、これがこの問題が発生する理由です。] 私が書きたいコードは次のようになります: begin #dosomething rescue SignalException => e raise e rescue Exception => e #halt the exception's progress end 編集:このコードは、トラップする例外のクラスを正しく取得する限り機能します。これは、以下のようにSystemExit、Interrupt、またはIRB :: Abortのいずれかです。

5
Railsのルーティングリソースの:idパラメータの名前を変更する
動的paramsスロットを変更する方法を探し回ったところ、正確に機能するこの投稿が見つかりました。投稿はhttps://thoughtbot.com/blog/rails-patch-change-the-name-of-the-id-parameter-in 基本的には、ルートが次の場合は何をするかです。 map.resources :clients, :key => :client_name do |client| client.resources :sites, :key => :name do |site| site.resources :articles, :key => :title end end これらのルートは次のパスを作成します。 /clients/:client_name /clients/:client_name/sites/:name /clients/:client_name/sites/:site_name/articles/:title 1つの解決策はdef to_param、モデル内のメソッドをオーバーライドすることですが、モデル自体には触れずにこれを必要としています。 しかし、それはRails 2.xの場合から、Rails 3で同じようにするにはどうすればよいですか? 更新 このアプリはモンゴイドを使用しています。ARではありません。したがって、gem friendlyはafaikでは使用できません。


14
Ruby:文字列をブール値に変換する方法
ブール値true、ブール値false、文字列「true」、または文字列「false」の4つのうちの1つになる値があります。文字列の場合は文字列をブール値に変換し、それ以外の場合は変更しないでください。言い換えると: 「真」は真になるべき 「false」はfalseになります trueはtrueのままである必要があります falseはfalseのままである必要があります

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.