无法安装gem – make无法识别为内部或外部命令可操作程序或批处理文件

我想在Windows 7上安装带有ruby 1.9.3的rspec-rails gem。我收到一些错误,说无法安装某些json库。 所以,我使用下面的说明来解决它。 Source = ‘json’本机gem需要安装构建工具 从[rubyinstaller.org]下载[Ruby 1.9.3] [2] [3] 从[rubyinstaller.org]下载DevKit文件[3] 对于Ruby 1.9.3使用[DevKit-tdm-32-4.5.2-20110712-1620-sfx.exe] [4] 将DevKit解压缩到路径C:\ Ruby193 \ DevKit 运行cd C:\Ruby193\DevKit 运行ruby dk.rb init 运行ruby dk.rb review 运行ruby dk.rb install 要回到手头的问题,您应该能够通过运行以下命令来安装JSON(或以其他方式测试您的DevKit已成功安装),这些命令将执行JSON gem的安装,然后使用它: gem install json –platform=ruby ruby -rubygems -e “require ‘json’; puts JSON.load(‘[42]’).inspect” 当我执行上面的第一步时,我收到错误 – C:\Ruby193\DevKit>gem install json –platform=ruby Temporarily enhancing PATH to include […]

如何检查移动设备是否已注册

我正在使用适用于Amazon SNS的Amazon AWS Ruby SDK,但我在使用已经注册的设备时遇到了一些问题。 有时当设备再次注册时,我收到类似AWS::SNS::Errors::InvalidParameter Invalid parameter: Token Reason: Endpoint arn:aws:sns:us-east-1:**** already exists with the same Token, but different attributes. 。 如何检查端点是否已存在,更重要的是,如何获取给定令牌的端点?

在irb中重新加载rubygems?

我现在有这个脚本。 def r(this) require this puts “#{this} is now loaded.” rescue LoadError puts “The gem ‘#{this}’ is missing.” puts “Should I install it? [y/n]” data = gets if data =~ /yes|y/i puts “Installing #{this}, hold on.” if `gem install #{this}` =~ /Successfully/i load this end else puts “Okey, goodbye.” end end 这使得可以动态地需要库。 像这样: r “haml” […]

BigDecimal在1.8对1.9

当升级到ruby 1.9时,我在比较BigDecimal预期值与实际值时遇到了失败的测试, BigDecimal是划分Float的结果。 预期:’0.495E0’,9(18) 得到:’0.4950000000 0000005E0’,18(27) 谷歌搜索“bigdecimal ruby​​ precision”和“bigdecimal changes ruby​​ 1.9”这样的东西并没有让我到处都是。 BigDecimal的行为是如何在ruby 1.9中改变的? 更新1 > RUBY_VERSION => “1.8.7” > 1.23.to_d => # > RUBY_VERSION => “1.9.3” > 1.23.to_d => # 18(18)和18(45)是什么意思? 我想象的精确度,但符号/单位是什么? 更新2 代码正在运行: ((10 – 0.1) * (5.0/100)).to_d 我的测试期望它与(==)相等: 0.495.to_f 这通过1.8,在1.9.2和1.9.3下失败

正则表达式蛋白质消化

所以,我正在用酶(为了你的好奇心,Asp-N)消化蛋白质序列,它在单字母编码序列中由B或D编码的蛋白质之前切割。 我的实际分析使用String#scan进行捕获。 我想弄清楚为什么以下正则表达式不能正确消化它… (\w*?)(?=[BD])|(.*\b) 前提条件(.*\b)存在以捕获序列的结尾。 对于: MTMDKPSQYDKIEAELQDICNDVLELLDSKGDYFRYLSEVASGDN 这应该给出类似的东西: [MTM, DKPSQY, DKIEAELQ, DICN, DVLELL, DSKG, … ]但是错过了序列中的每个D. 我一直在使用http://www.rubular.com进行故障排除,它运行在1.8.7上,虽然我也在1.9.2上测试了这个REGEX但无济于事。 据我所知,在两个版本的ruby中都支持零宽度前瞻断言。 我的正则表达式做错了什么?

我如何用minitest中的块来模拟?

希望MiniTest人员的一个简单问题.. 我有一段代码,我将在这里浓缩成一个例子: class Foo def initialize(name) @sqs = Aws::SQS::Client.new @id = @sqs.create_queue( queue_name: name ).fetch(:queue_url) @poller = Aws::SQS::QueuePoller.new(@id) end def pick_first @poller.poll(idle_timeout: 60) do |message| process_msg(message) if some_condition(message) end end 我如何模拟/存根/其他东西,以便我可以通过some_condition()进行测试并可能使用process_msg() ? 即我想测试@poller.poll(idle_timeout: 60) do |message| 。 我试图用模拟轮询器来存根Aws::SQS::QueuePoller#new ,但是它没有让消息传递给|message| 刚回来.. 这就是我所拥有的,这是行不通的 : mockqueue = MiniTest::Mock.new mocksqs = MiniTest::Mock.new mocksqs.expect :create_queue, mockqueue, [Hash] mockpoller = MiniTest::Mock.new […]

Ruby on Rails创建失败时的Active Record返回值?

我是ruby on rails的新手,无法完成这项工作。 基本上我有一个用户注册页面,其中有密码确认。 在User类中,我有以下validation: validates :password, confirmation: true 在控制器中我有 def create vals = params[:user] if(User.exists(vals[:username])) flash[:warning] = “#{vals[:username]} already exists! Please try a new one. ” else vals[:create_date] = DateTime.current user = User.create(vals, :without_protection => :true) if user==false or user==nil or user==vals flash[:warning] = “#{vals[:username]} has not been registered successfully. ” else flash[:notice] = […]

为什么帮助者不应该使用html?

我听说最好不要在帮助器中实际拥有任何HTML; 我的问题是,为什么不呢? 此外,如果你试图生成一个HTML列表或类似的东西,我怎么能避免实际的标签? 谢谢! -fREW

在rspec中模拟方法链

有一系列方法可以获取user对象。 我试图嘲笑以下内容以返回我的Factory Girl的user @current_user = AuthorizeApiRequest.call(request.headers).result 我可以模拟对象,直到call方法,但我坚持嘲笑result方法 allow(AuthorizeApiRequest).to receive(:call).and_return(:user)

从Ruby块中提取AST

是否可以从Ruby本身获取块的AST? 我已经看过ParseTree和ruby_parser,但他们似乎都对Ruby 1.9.2有粗略的支持(从我读过的内容)。 我需要一些适合1.9.2的东西。