如何在像instance_eval方法的块中更改self?

instance_eval方法在其块中更改self,例如: class D; end d = D.new d.instance_eval do puts self # print something like #, not ‘main’! end 如果我们定义一个方法selfelf(或任何其他方法(除了instance_eval)接受一个块),当print self时,我们将获得’main’,这与instance_eval方法不同.eg: [1].each do |e| puts self # print ‘main’ end 如何定义像instance_eval这样的方法(采用块)? 提前致谢。

失败后继续耙

我正在运行rake来自动化我在CCNet内部的构建过程。 我用它来启动IIS Express,然后运行Nunit,然后在Nunit完成后关闭服务器。 问题是每次Nunit失败,耙子停止,永远不会到达关闭部分。 在Nunit失败后如何继续使用rake,并且仍然告诉CCNet Nunit失败了,构建也是如此?

在state_machine gem上持久validation

在state_machine gem转换之前执行validation的正确语法是什么? 我试过以下, before_transition :apple => :orange do validate :validate_core end def validate_core if core.things.blank? errors.add(:core, ‘must have one thing’) end end 但我得到以下错误, undefined method `validate’ for # 我也试过写它, state :orange do validate :validate_core end 但是这会在保存记录后导致回滚,这不太理想。 我想阻止状态机转换为:orange 。 核心问题是在我的控制器中我有依赖于object.save结果的逻辑。 我对状态机的validation直到初始保存之后才开始,因此保存返回为真,控制器继续逻辑,如果对象无效,则不应该命中。 除了检查保存之外,我还通过手动测试有效性来解决这个问题,但感觉应该有一种方法可以在对象保存之前激活validation。

在带有Ruby 1.9.3的Windows 8 x64上,nokogiri gem缺少libxml2

我发现搜索类似问题的是Nokogiri还没有使用Ruby 2.0的 x64支持。 然而,虽然我在Windows x64机器上,我的Ruby版本是来自railsinstaller.org的ruby 1.9.3p392(2013-02-22)[i386-mingw32](使用Rails 3.2.13) 。 这也意味着已经安装了DevKit 。 gem install nokogiri –pre给出了这个错误: Temporarily enhancing PATH to include DevKit… Building native extensions. This could take a while… ERROR: Error installing nokogiri: ERROR: Failed to build gem native extension. C:/RailsInstaller/Ruby1.9.3/bin/ruby.exe extconf.rb checking for libxml/parser.h… no —– libxml2 is missing. please visit http://nokogiri.org/tutorials/installing_nokog iri.html for help […]

调用Procs的bizzare方式?

我找到了一个示例代码: def callback(procs) procs[:var_1] puts “Proceed” procs[:var_2] end callback(:var_1 => Proc.new {block_1}, :var_2 => Proc.new {block_2}) 我无法弄清楚方括号[:var_1]含义。 这是一种调用Porc / lambda的方法吗? 我也很困惑,因为在类似Hash的方式创建Procs: callback(:start => Proc.new {puts “The begining of the CALLBACK”}, :finish => Proc.new {puts “The ending of the CALLBACK”}) 对此事我感激不尽。

如何用ruby解析word文档?

有没有人知道我可以在OS X / Linux上使用的库来解析Word文件并将内容输出为HTML? 我已经看过win32ole,但据我所知它只适用于Windows,虽然我可能错了。 有什么建议?

根据规则计算价格(Ruby Rule Engine)

有几个规则引擎,如Treetop或Wongi :: Engine,但似乎没有一个适合我的个人资料。 我想建立一个灵活的系统,可以计算价格。 例如: 底座价格为100欧元 产品规则: Rule_#0雪橇的费用为100欧元 时间规则: Rule_#1你在23:00之后买了雪橇H =>你得到10€的折扣 日期规则: Rule_#2你在圣诞节买了雪橇=>你得到10%的折扣(10€) 用户规则: Rule_#3你的名字是圣诞老人=>你得到2欧元的折扣 规则也可以组合(排除/包括): =>最终价格是100-10-10-2 = 78

Ruby正则表达式 – gsub只捕获组

我不太清楚我是否理解非捕获组的工作原理。 我正在寻找一个正则表达式来产生这个结果: 5.214 。 我认为下面的正则表达式可行,但它正在取代包括非捕获组在内的所有内容。 如何编写正则表达式才能替换捕获组? “5,214”.gsub(/(?:\d)(,)(?:\d)/, ‘.’) # => “.14” 我想要的结果: “5,214”.gsub(some_regex) #=> “5.214

validationrails中是否存在多个属性之一

在多语言应用程序中,用户可以输入他们的中文和英文名称。 用户可以输入其中一个或两个,但必须至少输入一个名称。 class Person true validates :en_name, :presence => true validates :fr_name, :presence => true end 由于内置:validates_presence_of方法只能同时validation两个属性,有没有办法validationrails中至少有一个属性的存在? 像一个神奇的, validates_one_of :zh_name, :en_name, :fr_name 先感谢您,

Heroku db:拉’db:pull不是heroku命令’

即使我使用了heroku db,我也会收到这条消息:拉百万次。 出于某种原因,即使我甚至没有触及我的代码,它也不再有效。 有任何想法吗? 完整的错误消息是 db:pull不是heroku命令。 也许你的意思是pg:pull请参阅heroku help获取可用命令列表。