Ruby 如何从另一个rake文件修改/扩展rake文件?

我正试图找到一种方法,从另一个RakeFile修改/扩展一个RakeFile,而不实际更改它 当我运行rake任务时,我从SVN中检索到一个包含rakefile的解决方案。我想: 更改此rakefile中的变量 将新任务添加到此rakefile 它利用现有的任务 执行新任务 我希望最好在不修改光盘上原始RakeFile的情况下执行此操作。以下是一种在执行任务之前运行任意代码的方法 your_task = Rake::Task['task:name'] your_task.enhance { th

我如何访问;newPageLoaded";使用Ruby客户端在Selenium中标记?

通过阅读Selenium文档,我可以看到在执行页面加载操作时设置了“newPageLoaded”标志。我试图找出是否有办法在页面加载时获取该标志的值 如何使用Ruby客户端实现这一点将非常好。:) 你能试试这样的吗 selenium.getEval("selenium.browserbot.isNewPageLoaded()"); 我试过了,但不管页面是否已完成加载,它都返回false。我的JavaScript fu没有那么强大,所以我试图找出如何检查browserbot对象,看看是否可以找到

Ruby 在Rails 3中链接到远程和远程

我是一名西班牙Rails开发新手。你能帮我解决Rails的问题吗 我有一个Ror2和谷歌地图的应用程序,我捕捉到了X和Y坐标 发送到控制器。我使用:带参数 :catastro,:url=> {:controller=>“instalacion”,:action=>“catastro_ajax”},with=>“'coordx='+$('instalacion_longitud')。value+'&coordy='+$('instalacion_latud')。value”%> 在method:w

Ruby ZeroMQ上的PubSubHubbub

是否可以在上面写入集线器服务 更新: 我不想重写PubSubHubbub协议。我认为可以编写一个HUB,在ZMQ_PUB/ZMQ_SUB socket ZMQ_socket3上实现,但直到现在我还不清楚它是否有意义或是什么。pubsubbub有自己的协议。要使0mq使用该协议,您必须向0mq添加一个新的teansport。这是一件相当复杂的事情,尤其是PubSubHubbub协议基于XML,因此不容易解析 不过,您可以实现pubsubbub/0MQ桥。这应该很容易。什么是桥&它有意义吗。。。一些

Ruby 写入输出流3(stdout或stderr)

是否可以写入第三个输出流?我的情况是,我有许多脚本,它们可以在计算机网格上远程执行各种命令。这些命令产生stdout和stderr。然而,我希望将进度反馈给中央控制机器,而不要让它与网格中各种机器的交错stdout和stderr混淆。我在想,如果可以写入第三个输出流,我可以将它用于来自网格的特定状态事件,控制脚本可以报告这些事件,同时stdout和stderr可以重定向到日志文件,以便在出现错误时进行调试。 值得一提的是,我可能会在ruby中实现这一点,所涉及的机器将是windows和unix机

Ruby 使用mongoid直接在文档中嵌入文档

我需要将嵌入文档的数组批量插入到现有文档中。我尝试了下面的代码,但它不起作用 arr_loc = [] arr_loc << Location.new(:name=> "test") << Location.new(:name=> "test2") biz = Business.first biz.locations = arr_loc biz.save # not working 有关更多信息,请查看。。使用mongoid可以做到这一点吗?事实证

Ruby DataMapper中的关联

我在以下代码中遇到关联问题 我得到的错误是最后一行代码上的注释 编辑:我简化了代码… require 'rubygems' require 'data_mapper' # requires all the gems listed above require 'pp' DataMapper.setup(:default, 'sqlite:///Users/chris/Dropbox/HawkEye-DB Test/store.sqlite') class Manufacturer incl

Ruby 从模块导出变量

我有一个模块a: module A extend self attr_accessor :two, :four ONE = "one" @two = "two" @three = "three" @@four = "four" @@five = "five" def six "six" end end 我要求它放在另一个文件中: require 'a' include A p ONE # => "one" p two # =&g

在代码中运行Ruby单元测试(Test::Unit)

有人知道我如何在Ruby代码中运行单元测试(test::unit)吗?我在网上找不到任何帮助我的东西。我们都知道,通过执行“ruby your_test_name.rb”可以从命令行运行单元测试。我基本上不想从命令行运行,但我想在ruby代码本身中运行。有人有什么想法吗?提前谢谢你的帮助。你怎么能想象得到 如果您想在更改后自动启动代码(测试),请签出gemguard 1) 安装防护装置 添加到您的文件中 gem 'guard-test' 比跑 bundle install 或者如果您不使用b

Ruby 拯救Selenium Webdriver中的脚本错误?

我在SeleniumWeb驱动程序中编写了一个代码,用于测试我的网站的ContactUs页面的运行状况 代码运行良好。我的进一步目标是: 使用Rescue(当此脚本失败时获取错误消息。特别是当在函数>“def test\u contact\u us\u screen\u shot”的执行过程中找不到某些元素时) 参考代码 require 'rubygems' require "selenium-webdriver" require "test/unit" class ContactUsScre

如何在ruby中实现argmax?

给定一个json数组: [{ "x":"5", "y":"20" },{ "x":"6", "y":"10" },{ "x":"50", "y":"5" }] 我想找到argmax(x),这样我就可以放置argmax(arr,:arg=>“x”).y并获得5。如何在Ruby中优雅地实现这一点 编辑:稍微澄清一下。其思想是,您可以在列表中指定要最大化的元素的字段,该方法将返回最大化元素。我认为您需要可枚举的max\u by。要像您所说的那样获得y,应该是: arr.max_by {|hash|

比较Ruby中的三个字符串

我想比较三个字符串,并根据哪些字符串相同而采取不同的操作 在我看来,有5种不同的结果: 它们都是一样的 他们都不一样 其中两个是相同的A=B、B=C或C=A 我正在努力编写一段高效的Ruby代码,以获得5种不同的结果。比较字符串似乎是一个相当昂贵的操作,我不想重复比较相同的字符串 这段代码将在一个循环中运行,因此进行一些优化似乎是个好主意。这不是我的计算机科学作业,这是一个现实世界的问题:- [编辑] 对Sergio的代码进行进一步优化,可以得到更好的结果。我们可以将第三个字符串比较延迟到if…

UDP套接字与ruby

我无法绑定到服务器地址。我使用SavonXML库与服务器建立了连接。现在我只需要监听服务器并收集它发送的HTTP数据包。服务器每次发送: http://200.34.12.168/Videos/1/frame/0 http://200.34.12.168/Videos/1/frame/1 http://200.34.12.168/Videos/1/frame/2 http://200.34.12.168/Videos/1/frame/3 http://200.34.12.168/Videos/1

Ruby 如何从字符串模式解析浮点

我正在用下面的拍子弹奏一根弦 "00:00:30.04," 哪种方法是将该字符串解析为浮点的最聪明的方法 最好的, 菲尔你有3个数字。将它们分开,只需在每个字符串上调用#to_f(意思是“to float”) string = "00:00:30.04," strings = string.split ":" numbers = strings.map { |s| s.to_f } numbers # => [0.0, 0.0, 30.04] 你有3个号码。将它们分开,只需在每个字符串

如何在ruby 2上安装gems?

我刚刚在MacMountainLion上安装了ruby 2,如何安装gems?事实上,我已经安装了两个,但有点不对劲。也许新的装置可以解决这个问题 macbook:~m$ gem install rails ERROR: Loading command: install (LoadError) cannot load such file -- openssl ERROR: While executing gem ... (NoMethodError) undefined me

在ruby中迭代数组的散列

我有一个散列,其中包含一个数组: { "id": "0001001", "name": "Bob Fisher", "work": [ { "employer": { "id": "6883542487", "name": "Marvel" }, "location": { "id": "108081209214649", "name": "Las Vegas, Nevada"

Ruby中奇怪的JSON解析问题

我正在从一个似乎是JSON格式的网页下载内容。它是一个大文件,格式如下: "address1":"123 Street","address2":"Apt 1","city":"City","state":"ST","zip":"xxxxx","country":"US" \"address\1":\"123 Street\",\"address2\":\"Apt 1\",\"city\":\"City\",\"state\":\"ST\",\"zip\":\"xxxxx\",\"country

Ruby 绑定器HTTP可以工作,但不能使用HTTPS;网络错误

在使用Gemfile源运行bundler时: 来源“” 我得到这个错误: Resolving dependencies... Network error while fetching https://s3.amazonaws.com/production.s3.rubygems.org/quick/Marshal.4.8/pg-0.14.0-x86mingw32.gemspec.rz 如果我运行指定Gemfile source的命令: 来源“” 它运行良好。有什么想法吗 使用bundler(1

Ruby 当线程处于循环中时,如何将其断开?

我在irb中运行了以下程序,但在完成后不会中断/退出线程: count = 0 Thread.new do while count < 20 do puts 'Hai' count += 1 end Thread.kill end count=0 新做的 当计数小于20时,请执行以下操作 放‘海’ 计数+=1 结束 线程杀死 结束 它就挂在控制台上。有没有办法完全退出线程?根据我的研究,线程应该在退出块后结束,但是我在网上找不到任何关于这个的信息。谢谢 这

rubygems中写入的永久缓存文件的适当目录是什么(如unix';s/var)?

我正在开发一个捆绑包,它是一个简单的CLI CLI将发出web服务器请求并缓存对文本文件的部分响应 但是,在开发过程中,我找不到合适的地方来存储响应缓存(我做了一些谷歌搜索)。我只是把它放在gem根目录的“var”目录中。但我不认为gem的根目录是缓存文件的好地方 tmpdir适用于临时缓存文件,但我希望永久存储缓存 对于这样的缓存文件,在目录路径上有更好的做法吗?由于您可能不希望用户共享缓存内容(并且出于其他安全考虑),我会将其放在/home/$USER/$GEMNAME/cache(例如/h

Ruby irb为Twitter::Module提供未定义的方法

尝试在irb(山狮上的zsh外壳)中使用Twitter gem试验Twitter api的新手。我一直在获取Twitter::Module的未定义方法。任何帮助都将不胜感激 irb(main):001:0> require "rubygems" => false irb(main):002:0> require "twitter" => true irb(main):003:0> puts Twitter.user("Suchitra_E").location No

Ruby 如何使用Releasy/Ocra/InnoSetup将卸载图标设置为与安装图标不同

我正在使用构建一个Ruby应用程序的安装程序。它创建一个安装程序,为应用程序创建一个windows可执行文件(即启动器),为卸载程序创建一个。我想为启动器和卸载程序使用不同的图标。我不太明白怎么做。在我的releasy项目中,我想我已经告诉过它我不想使用的图标 Releasy::Project.new do files ['*.rb', 'media/splash.png', 'media/uninstall.ico'] ... end 我重新定义了WindowsInstaller\g

RubyonRails上的数据映射

ActiveRecord是否有办法捕获所有数据库字段,包括Pks和FKs?就像ORM DBIx::Class脚本在Catalyst上所做的那样 以下是对此的简要描述: 使用Catalyst“\u create.pl”脚本生成模型 脚本: $ rm lib/MyApp/Model/DB.pm $ script/myapp_create.pl model DB DBIC::Schema MyApp::Schema \ create=static components=TimeStamp,Pass

Ruby 为什么array_name[10001999]有1600个项目?

产出: 起点:0 完:999 尺码:999 起点:1000 完一九九九年 尺寸:1600 开始时间:2000年 完:2999 尺码:600 这个1600大小的数组怎么可能呢?我想你的意思是ids[(I*1000)…(I*1000+999)]你在做ids[start,length]而不是ids[start..end]参见 numThou = ids.size/1000 for i in 0..numThou puts "START:" + (i*1000).to_s puts "END:"

在Ruby中是什么意思?

这里有一个非常基本的问题——我们被要求将以下内容翻译成新的格式,所以 "hello".send(:reverse) 变成 "hello".reverse 下面的:/是什么意思 10.send(:/, 3) => 3 这是一种类似的方法。方法将其第一个参数作为方法名,方法名可以是符号或字符串 因此,您正在使用10.send(:/,3)进行除法运算,它只不过是10/3(这是10./(3))的语法糖。这是一种类似的方法。方法将其第一个参数作为方法名,方法名可以是符号或字符串 因此,您正在

Ruby 章节中的命名错误#编辑与其他类似的问题

我对Ruby有点陌生,正在从头开始写一个程序。。。我遇到了一个错误,我不知道它是从哪里来的。我已经花了一个多小时,我相信这是一件非常简单的事情。我有其他类似的页面可以正常工作,但实例变量存在一些问题。这几乎是一个和我一样的问题 这是我的错误: Showing C:/Users/kevin/Desktop/ruby_test/sites/simple_cms/app/views/sections/_form.html.erb where line #4 raised: undefined

Ruby 如何在葡萄园中找到西纳特拉路线

我想报告我路线的统计数据。 要做到这一点,我必须知道它们是什么 我用的是ruby的sinatra 所以我有 get '/test/:username' do .... end after do request.path_info end 但我得到“/test/test\u username123”作为输出 是否有一个变量(如graperoute.route\u path)可以让我获取路线 编辑:葡萄的路线。路线路径将输出“/api/:version/test/:username

Ruby Sinatra活动记录模型问题

所以我正在编写我的第一个Sinatra应用程序,并使用ActiveRecord作为ORM 所以在我的app.rb中,我有一个 class User < ActiveRecord::Base validates_uniqueness_of :username validates_presence_of :username end Sinatra在用户上崩溃。新建并说 无法获取数据。在上面。我看了教程也不知道。我明白了 我在函数之前声明了User类,因此它没有看到该类 cla

Ruby 什么是database.yml的默认密码?

我刚刚尝试安装了peatio,我在peatio/config/database.yml中看到密码为空 那里应该写些什么? 以下是截图: 以下是我在尝试启动服务器时从终端收到的错误: bundle-execrails服务器 /usr/local/lib/ruby/2.1.0/psych.rb:370:in'parse':():did 分析第6行第3列的块映射时找不到所需的键 (心理学:SyntaxError) 已编辑,以下是完整错误: from/usr/local/lib/ruby/2.1.0/p

Ruby 如何在rspec中运行多个测试

我通过rspec运行了几个测试。这些名称是test1.rb,test2.rb,等等。如何在一个队列中运行它们,而不是在linux控制台中逐个运行它们?我试了一个 rspec -e"test" 变体,但控制台说所有的例子都被过滤掉了。请帮助。在我继续之前,请注意所有规范文件名都应以\u spec.rb结尾。在您的情况下,它应该是:test1\u spec.rb,test2\u spec.rb,等等。我鼓励你结账。运行/spec目录中的所有规范。您可以运行: $ rspec . 您可以传递选项以

Ruby 厨师长用户资源(检查是否存在?)

我知道如何创建用户资源: user "random" do supports :manage_home => true comment "Random User" uid 1234 gid "users" home "/home/random" shell "/bin/bash" password "$1$JJsvHslV$szsCjVEroftprNn4JHtDi." end 但我不确定如何使用Chef查找当前节点上所有用户的列表。在chef客户端运行期间,

Ruby 从API响应获取令牌

我有一个我正在连接的API,根据文档,我想从我对API的第一次调用中获得一个登录令牌。我用HttpParty设置了一个初始化方法,并获得了令牌,但我不确定如何将其放置在初始化方法中,或者为什么我似乎无法正确解析它 以下是初始化方法: def initialize(username,password) @username = username @password = password @login_token = login_token get_token(se

MechanizeRuby-如何等待基于javascript的页面更新?

机械化ruby(即)-如何等待基于javascript的页面更新 我有一个需要登录的站点,但是需要很多秒才能登录,但之后它就被当作javascript处理了(看起来) 有没有一种方法可以刷新以下结果: page = agent.submit(login_form) -就像@iced所说的:mechanize不处理js。作为替代方案,您可以使用基于webdriver的解决方案(例如selenium、gebish、watir)

Ruby 钢轨加载方式

我有一些观点需要很多部分,而这些部分又需要几个引导模式才能正常工作 然而,加载modals有点痛苦,因为如果我将它们加载到错误的标记中,它会完全破坏它们,并复制它们 我想有一个很好的助手load\u modal,它实际上会保存一个需要加载的modal列表。然后,在我选择的HTML的一部分中,我可以选择迭代这个列表来加载部分 我的问题 如何存储要调用的部分及其参数的列表 我想到了以下几点(故意使用不起作用的语法,因为我不知道怎么做) 应用程序\u helper.rb def load_moda

将英语句子转换成ruby键值对的最佳方法是什么?

我想在键值对中转换以下句子,比如({total\u amount:discount\u amount}) 我该怎么办?如果我能从……开始得到任何提示,那将很有帮助。我假设每个感兴趣的句子都是这样的: $XX....for....$YY $XX....off....$YY 或者像这样: $XX....for....$YY $XX....off....$YY 其中,XX和YY是非负整数,“for”和“off”是告诉您如何处理这两个数字的关键字。如果是这样,您似乎希望: arr = ["$10

Ruby 连字号的切换顺序

解析连字符单词列表并返回开头和结尾单词的最佳方法是什么 输入: spider-man wonder-woman 输出: man-spider woman-wonder 你可以拆分它,然后将其反转 "spider-man".split('-').reverse.join('-') #=> "man-spider" 您可以使用,并且 你可以用正则表达式 "spider-man".gsub(/^(.+)-(.+)$/, '\2-\1') #=> "man-spider" 它的速度

文本冒险中的ruby变量作用域错误

这是我正在编写的代码 def gold_room puts "This room is full of gold. How much do you take?" print "> " choice = $stdin.gets.chomp # this line has a bug, so fix it if choice.include?("0") || choice.include?("1") how_much = choice.to_i else

Ruby 从字符串中选择特定的字符位置

我正在寻找一种从字符串中选择伪随机字符的方法 例如,我有一个64个字符的字符串。我想选择位置0、1、4、5、8、9 或者更硬的一个是相同的字符串,我会选择位置0,1,2,4,6,8,10,11,12等等 有没有快速的方法可以做到这一点?这可以使用[]来完成 是的,你可以用 更新: 如果你想得到字符串结果-加入结果 > "64charstring".chars.values_at(*[0, 1, 4]).join => "64a" 这里有一些可能对你很有用的东西: #!/usr/bi

Ruby 红宝石加权循环

我有一个未知数量的东西,比如说100个苹果都有相同的质量 我有两个总重量的桶,当所有的苹果都在桶里的时候,我试图击中它们——桶1占总重量的60%,桶2占40% 我需要一个简单的ruby算法将苹果一个接一个地放入桶中。我需要保持两个桶尽可能均匀分布,而我正在填补他们 我不可能一下子做到这一切,所以我不知道哪一个是最后一个进入最后一桶的苹果。但我总能知道每个桶里苹果的总数 (这是我试图解决的一个真正的问题,不是一个家庭作业问题——我只是用这种方式来表达,以便于理解。)bucket_1,bucket_

Ruby-MatchData对象在没有.new的情况下是如何创建的?

我正在为一个对象创建一个类(比如,Bar),该对象将由另一个类的方法返回(比如,Foo#Bar),几乎所有对象都是由返回的 但是类MatchData没有。new 我知道我不需要模仿MatchData实现,但我想了解它,并知道当我发现它有趣时如何去做。假设我不希望客户端创建Bar对象,除非通过调用Foo#Bar 问题: 在内部,没有.new,如何创建MatchData对象 我如何实现它(是否模仿匹配数据) 匹配数据。新的方法是: rb_cMatch=rb_define_类(“匹配数据”,rb_cO

通过rvm更新到ruby 2.4.1,但Atom仍在2.3.1上

我重新启动了atom和计算机。这似乎没有一个配置值。我将如何更新atom以反映这一点 你试过这三样东西吗 在~/.bashrc中,通过: 或者,安装 或者,让rvm创建一个可以配置为ruby命令的命令,如所述。thx-我看到了这些命令,但没有一个对我有效。事实上,这是非常奇怪的,它坚持在2.3.1。最后,我只是将rvm default 2.4.1添加到我的~/.bash_配置文件中,直到我可以更深入地了解它。非常难看,但似乎有效。 source ~/.bash_profile

使用ruby脚本时出现Rspec错误:";无法加载这样的文件--./components/tasks.rb";(ruby应用程序不是rails)

我正在尝试构建我的Rspec测试,以测试我正在构建的ruby应用程序。我知道我应该先构建,然后再测试。代码100%有效,我只是在让Rspec查看我的代码时遇到了问题 github上的完整代码: 到目前为止,我使用rspec运行的唯一文件是ruby/spec/game_spec.rb game_spec.rb文件如下所示: require_relative.。/tictactoe Rspec.description任务是什么 在…之前做 @game=Tictactoe::game.new 终止

Ruby 从数组的散列中选择命名数组

我有一个数组的散列。数组由散列索引,散列是我读取此内容的方式: [ {"name":"G18","data": [["X301",141],["x7901",57],["x2100",142],["x90",58]]}, {"name":"G19","data": [["M16",141],["M203",57],["M29S",142]]}, {"name":"G20","data": [["X301",141],["x7901",57],["x2100",142],["x90",58]

Ruby 使用随机电话号码生成器获取错误的位数

我使用以下方法生成10个随机数字: 10.times.map {|i| (0...9).to_a[rand(10)] }.join 但是如果你运行这个,你会注意到它不会给你10个随机数字。我不明白为什么。次迭代器将运行10次: 10.times 每次调用迭代器时,我们还将映射调用链接到迭代器,并传递一个黑色消息。这将确保块的内容也将被调用10次: 10.times.map {|i| } 在块内部,我们取一个区间,一组有开始和结束的值。在Ruby中,我们可以使用范围来实现这一点。我们取0-9

如何将日期格式从mm/dd/yyyy更改为dd/mm/yyyy Ruby on Rails

我的约会对象是: 2018年1月14日 我想把它改成: 2018年1月14日或2018年1月14日 两个步骤: 您需要将字符串转换为Date对象。为此,请使用 您可以使用将日期对象转换为首选格式 见下面的实施: str = '01/14/2018' date = Date.strptime(str, '%m/%d/%Y') => #<Date: 2018-01-14 ((2458133j,0s,0n),+0s,2299161j)> date.strftime('%d-

Ruby 如何以这种方式合并散列

我写了一个巨大的代码,如下所示 headers, *data_rows = @testCaseSheet local = headers.zip(*data_rows) local = local[1..-1].map {|dataRow| local[0].zip(dataRow).to_h} testCaseHash = {} local.each do |value| testCaseHash[value["Locator"]] = value

查找最长的子字符串没有重复-帮助优化代码[Ruby]

所以我一直在试图解决一个问题,“给定一个字符串,求出最长子字符串的长度而不重复字符。” 比如说 Input: "abcabcbb" Output: 3 Explanation: The answer is "abc", with the length of 3. 目前,我优化了算法,通过使用哈希表确定子字符串是否唯一。但是,我的代码仍然在O(n^2)运行时运行,因此在提交期间超出了时间限制 我试图做的是基本上遍历每个可能的子字符串,并检查它是否有任何重复的值。在这里,当涉及到暴力方法时,我

在ruby语言中,两个大的浮点值相乘后会产生指数值,如何得到正常值?

我正在从用户处获取输入字符串: 接下来,我用符号“*”拆分输入 接下来,我将这两个数字转换为浮点数据类型 然后,我将这两个数字相乘 def multiply(value1, value2) result = $value1 * $value2 puts(" Multiplication Result: ", result) end 输入和输出示例: 您可以使用指定格式,例如: f |将浮点参数转换为[-]ddd.dddddddd, |其中,精度指定后面的