动态创建方法中的Ruby动态参数

我有以下几种方法定义: method_name = :foo method_arguments = [:bar, :baz] method_mandatory_arguments = {:quux => true} method_body = ->{ quux ? bar + baz : bar – baz } 所以我想得到一个真正的方法。 但是define_method没有任何动态定义方法参数的可能性。 我知道另一种使用class_eval的方法,但我知道用class_eval定义方法比使用define_method慢得多。 我怎么能有效地存档这个? 我在rails控制台中做了一些基准测试: class Foo; end n = 100_000 Benchmark.bm do |x| x.report(‘define_method’) do n.times { |i| Foo.send(:define_method, “method1#{i}”, Proc.new { |a, b, c| a + b […]

在Mac OS X Lion上安装Ruby 1.9.3时出错

我正在尝试在MAC OS X Lion上安装Ruby 1.9.3和Rails。 (我的Xcode是4.3版)(我已经安装了Rails 3.2.2) 无论我使用: rvm install 1.9.3 –with-gcc=clang 要么: rvm install 1.9.3 我的终端显示: Error running ‘make ‘, please read /Users/AlexHo/.rvm/log/ruby-1.9.3-p125/make.log There has been an error while running make. Halting the installation. 有谁遇到过同样的情况? AlexHo@Nien-Yi-Hos-MacBook:~$ rvm install 1.9.3 Fetching yaml-0.1.4.tar.gz to /Users/AlexHo/.rvm/archives Extracting yaml-0.1.4.tar.gz to /Users/AlexHo/.rvm/src Configuring yaml in /Users/AlexHo/.rvm/src/yaml-0.1.4. Compiling yaml in […]

在Prawn中使用堆叠边界框时自动启动新页面

我想在Prawn中模拟表的行为,但由于我可以在单元格内绘制的东西的限制,所以不能使用表。 所以我使用边界框来为每行内的元素创建上下文。 我遇到的问题与行有关。 我正在尝试这个: require ‘prawn’ Prawn::Document.generate(“test.pdf”) do move_down 50 bounding_box [0, cursor], width: bounds.width do 20.times do |i| stroke_bounds && start_new_page if (i+1) % 11 == 0 bounding_box [0, cursor], width: bounds.width, height: 50 do fill_color “cccccc” fill_rectangle [0, bounds.height], bounds.width, bounds.height end end stroke_bounds end end 但我觉得这非常hacky而且不是最优的,因为在start_new_page之后无法重新定位包含bounding_box(我希望它开始高一点),而且我必须手动指定页面的位置发生中断(在这种情况下每11个元素)。 我尝试使用bounds.parent.height并使用光标检查它是否到达结尾,但似乎即使在分页后, bounds.height增加。 您对如何改进此解决方案有任何建议吗?

Ruby on Rails:无法加载

什么是可unloadable ? 我在thinkbot的高压页面控制器中看到了这个。 thinkbot关于可卸载的博客 ,但我仍不清楚它的作用。

零|| 假和假|| 在ruby中没有

nil || false nil || false返回false和false || nil false || nil返回nil 。 有没有人对此有解释?

ruby – rails – 处理布尔值假 – 它什么都不输出

我在我的db中记录了一个布尔字段(true / false)。 该字段已存档。 当归档为真时,所有这些都很好地输出true: Rails.logger.info @commentable.archived Rails.logger.info @commentable.archived? Rails.logger.info !!@commentable.archived? 但是当存档为假时,它不输出上述任何一个。 当字段为FALSE时,如何获得false输出? 谢谢

如何使用Ruby检查字符串中是否至少有一个数字?

我需要检查一个字符串是否包含至少一个使用Ruby的数字(我假设某种正则表达式?)。 我该怎么办?

有没有办法从Ruby中的实例调用私有Class方法?

除了self.class.send :method, args…当然。 我想在类和实例级别提供一个相当复杂的方法,而不需要复制代码。 更新: @Jonathan Branam:这是我的假设,但我想确保没有其他人找到方法。 Ruby中的可见性与Java中的可见性非常不同。 你也很正确, private不能在类方法上工作,尽管这会声明一个私有类方法: class Foo class < NoMethodError: private method ‘bar’ called for Foo:Class

如何捕获错误通过对等方重置连接(Errno :: ECONNRESET)

以下代码有时会生成“按对等方重置连接”错误。 谁能告诉我如何处理这个exception? doc = Nokogiri::HTML(open(url)) Connection reset by peer (Errno::ECONNRESET)

Rails:为什么RSpec会崩溃我的被覆盖的Devise控制器请求规范?

更新:哦,好悲伤,这是一个糟糕的合并后的红鲱鱼。 沿着这条线的某个地方,以下内容从spec / spechelper.rb的清理中删除 Dir[“#{Rails.root}/app/**/*.rb”].each {|f| load f} 现在这已经恢复,一切都在恢复。 我怀疑它只是加载平面目录,而不是嵌套目录,使它看起来像命名空间问题。 (我不能回答我自己的问题,因为这是一个新帐户,我没有代表) 原始问题: 我的大多数RSpec / Capybara测试工作正常,但我有一个测试只是试图访问路径爆炸,我坚持调试。 我怀疑这是一个命名空间问题,但我不知道如何解决这个问题; 任何帮助感激不尽。 整个测试是: require ‘spec_helper’ describe ‘Registrations’ do context ‘when debugging the blocking issue’ do it ‘this minimal test should pass’ do visit new_user_registration_path end end end 错误消息是: $ bin / rspec spec / requests / users / registrations_spec.rb 失败: […]