Ruby 如何在单引号字符串中转义斜杠?

在Ruby 1.8.6(2007-09-24补丁级别111)中: str='\&123' 放置“abc”.gsub(“b”,str)=>ab123c 将“abc”.gsub(“b”,“#{str}”)=>ab123c 将“abc”.gsub(“b”,str.to_s)=>ab123c 将“abc”.gsub(“b”,“\&123”)=>ab123c 将“abc”.gsub(“b”,“\&123”)=>a&123c简单化: str = '\&123' <-- the result o

Ruby 为什么从cmd文件调用gem.bat会在第一次调用后退出?

我正在调用Windows.cmd文件中的gem命令,但它在第一个命令后退出。有什么好处 gem sources --add http://gems.github.com gem install haml 我通过cmd.exe调用了第一个gem命令,解决了这个问题,但我仍然渴望听到关于发生了什么的解释 cmd.exe /c gem sources --add http://gems.github.com gem install haml gem命令实际上是路径中的批处理文件。例如,C

Ruby 回形针-如何根据尺寸跳过保存的附件

我有一个带回形针的rails 3应用程序。如果附件是图像,并且图像宽度或高度小于100,我希望跳过保存 我在模型中有以下内容: validate :file_dimensions, :unless => "errors.any?" def file_dimensions dimensions = Paperclip::Geometry.from_file(attachment.to_file(:original)) if dimensions.width <

Ruby 正则表达式-无法匹配此字符串

我正在编写一个需要模式匹配的ruby脚本。我得到了最多,但是我无法使用 /(\d+\\u+\d+*/) 它与以下模式匹配,尽管/\***\124; TYPE:\=*/。我不明白为什么。我也检查了模式匹配的顺序 有人有什么建议吗?对于匹配第一个字符串(01122223\u 200000\u 1717181)这可能会起作用:/(\d++\u)+\d++/对于匹配第一个字符串(01122223\u 200000\u 1717181),这可能会起作用:/(\d++\d++/。只要使用范围 /[\d_]*

在Ruby中将二进制值转换为十六进制

在Ruby中,我需要将二进制值转换为十六进制。我的情况如下: 当bin=“0000111”时,我的输出应该是:hex=“07” 当bin=“010001111”时,我的输出应该是:hex=“08f” 有人能帮我解决这个问题吗?提前感谢。两个String#to_i和Integer#to_s都使用一个可选的整数参数来指定基数。因此,您可以使用基数2将二进制字符串转换为整数,然后使用基数16将该整数转换回字符串。如何: >> "0x%02x" % "0000111".to_i(2) #=&

使用ruby从文本中删除url

给定一个文本,我想删除url部分并保留其他文本 例如: 'bla bla bla... bla bla bla... http://bit.ly/someuri bla bla bla...' 成为 'bla bla bla... bla bla bla... bla bla bla...' 有没有ruby内置方法可以有效地做到这一点 尝试使用正则表达式: (?:f|ht)tps?:\/[^\s]+ 我刚刚发现并修改了如下代码: URI_REGEX = %r"((?:(?:[^ :/?#]

Ruby 其他方法;嵌入;或使变量“变”;“静态”;用新方法?

除了闭包和define_方法之外,还有其他方法可以使它成为另一种方法吗 假设我有这个: def test result=[1,2,3] metadata=['foo', 'bar'] # for simplicity, could be fetched from database result.define_singleton_method :headers, lambda { metadata } result end 我很好奇,在Ruby中,是否有其他方法可以嵌入、生成静态

Ruby 红宝石透明屏幕

可能重复: 如何在ruby中清除终端屏幕 puts "hello, what's your name?" input = gets.chomp <<clearscreen>> puts "nice to meet you, #{input}" 显示“你好,你叫什么名字?” input=gets.chomp 放入“很高兴认识你,#{input}” 不确定你到底在问什么,但在这篇文章中有不同的方法来清除irb/terminal: 有

Ruby 如何正确布置网格

我有许多不同大小(宽度和高度)的“砖块”和一个固定大小的容器。我想在容器内尽可能紧凑地布置砖块,从顶部开始向下移动。考虑到前面的步骤,我选择了网格在任何步骤都应该是最优的标准。到目前为止,我有以下(低效的)代码不起作用: def fits?(x, y, w, h) !((x + w > W) || (y + h > H)) end def overlaps?(existing, modified) existing[:x] + existing[:w] > modif

我如何找出ruby中不同图像之间的颜色相似性?

让我们假设,我有一堆彩色图片,我想根据它们的主要颜色对它们进行分组。所以最后我得到了所有蓝色的图片,黄色的,绿色的,灰色的和其他不同的组,有点像谷歌图片搜索可以做到的。此外,我不希望小组少于,比方说,3张图片,并把图片落入这些组到下一个最佳颜色组(所以我也需要组相似性) 我该怎么办?我不知道 在Ruby中。我将使用带有欧几里德距离的颜色直方图来测量图像之间的颜色相似性。并搜索颜色直方图定义。这是解决此类问题的一种非常简单的方法我将使用带有欧几里德距离的颜色直方图来测量图像之间的颜色相似性。并搜索

代码Kata上的Ruby置换递归

通常堆栈溢出是为实际问题保留的,但我正在绞尽脑汁解决一个难题,不知道是否有人能解释它。我正在复习递归,偶然发现了DaveThomas的代码Kata(非常酷)。我很喜欢自己回答问题,然后试图把答案删减,但有一个答案我想不出来: 问题:代码Kata#2 一个有效的答案,但我不明白为什么会出现: def chop(target, values) # Special handling for zero and single element arrays return -1 if values

Ruby sinatra应用程序是否可以使用2个数据库?

我们在Sinatra中有一个API,它同时服务于暂存环境和生产环境。如果请求来自临时服务器,则API应与临时数据库通信。如果请求来自生产服务器,它应该与生产数据库通信 所有应用都部署在Heroku上 我们可以使用env['HTTP\u HOST']来确定请求是来自暂存还是生产,然后设置db\u url 但是,问题在于运行以连接到数据库的ActiveRecord init代码: db = URI.parse db_url ActiveRecord::Base.establish_connectio

Can';t调用在父作用域中分配的局部变量 blah=10 def什么? “#{blah}” 结束 放什么? # => #NameError:未定义的局部变量或main:Object的方法“blah” #来自(irb):3:在‘什么?’ #来自(irb):5 #从E:/RailsInstaller/Ruby1.9.3/bin/irb:12:in``

为什么??写这篇文章的正确方法是什么?我应该在局部范围内复制一个变量,还是有更好的变量?您需要在此处定义实例变量或方法: blah = 10 def what? "#{blah}" end puts what? # => # NameError: undefined local variable or method `blah' for main:Object # from (irb):3:in `what?' # from (irb):5 # from E:/

Ruby 如何防止使用gemv自动安装gems文档。2

以前设置我的系统以禁止安装带有--无ri和--无rdoc的gem文档 Ruby 2.0.0和gem 2.0.0似乎删除了--no ri标志(和功能?) 即使指定了--无rdoc,我仍然会收到安装文档的: ~/dev/ruby> gem install bundler --no-rdoc Fetching: bundler-1.3.1.gem (100%) Successfully installed bundler-1.3.1 Done installing documentation f

Ruby “x,y”和“x”之间的区别是什么;y=0 | `红宝石?

在使用block编写代码时,我试图理解管道内部的局部变量创建(|)。在我的IRB下面的代码中也尝试了同样的方法 [1,2,3].each {|x;y| y=x; print y} #123=> [1, 2, 3] [1,2,3].each {|x;y = 0| y=x; print y} #SyntaxError: (irb):1: syntax error, unexpected '=', expecting '|' #[1,2,3].each {|x;y = 0| y=x; pri

Ruby 如何动态构建区块救援链?

这是否可能构建一个块链/救援,像这样一个动态,例如从符号数组[:f1,:f2,:f3,f4]。下面的代码应该模仿我静态编写的代码: begin applyF1() rescue applyF2() begin applyF3() rescue applyF4() end end 我已经知道如何从符号(object.send(message))发送内置消息,因此applyFx不是问题所在。这是我想到的第一个问题: def

在Ruby错误中调试cucumber

直到今天,我才能够毫无问题地调试代码。我不知道我改变了什么,可能会影响到这一点,但现在我的 require "ruby-debug" 在我的env.rb中,当我尝试运行功能时,会导致以下情况 cannot load such file -- irb/init (LoadError) /usr/lib/ruby/site_ruby/1.9.1/rubygems/core_ext/kernel_require.rb:45:in `require' /usr/lib/rub

Ruby 正在尝试使用Rails 4.0.0设置ROR环境,但Webrick Webserver不会运行UAS

已安装: -Windows 7 64位 -Ruby200-x64 -轨道(4.0.0) -rubygems更新(2.0.3) -mysql2(0.3.11) -mysql-installer-community-5.6.12.1 创建了一个名为simple\u cms的新rails应用程序后,尝试使用命令reails s运行Webrick:(请参阅下面第行的命令) 任何有关配置的帮助都将不胜感激。不知道我哪里出了问题。。。。请帮忙 C:\Users\User\My Documents\sites

Ruby Selenium webdriver不单击元素

我对selenium webdriver有一个问题,它无法单击某个特定元素 我使用的是ruby,这种情况发生在chrome上。firefox上的一切都很好。即使在Chrome上,如果我在调试模式下执行脚本,它也能够单击该特定元素。我尝试在单击前事件的元素上设置焦点,并在单击前增加等待时间。 什么都没用 谢谢是否引发异常?哪一个例外?你能分享你的相关语言和相关的HTML吗?请提供更多信息。

Ruby 日期后缀(第一、第二、第三、第四等)

我正在编写一个脚本,将IPTC数据添加到图像文件夹中。它从EXIF信息中提取日期,并将其添加到'Caption'IPTC标签中 date = iptc["DateTimeOriginal"] date = date.strftime('%A %e %B %Y').upcase iptc["Caption"] = '%s: %s (%s)' % [date, caption, location] 除日期输出外,脚本正常工作: Sunday 13 October 2013 理想情况下,我希望它输

ruby设计创建新用户

我正在使用Desive和cancan进行用户注册和登录。当用户注册时,我想做更多的事情。例如,设置用户和角色。我在user.rb中尝试了这一点: after_create :add_default_role private def add_default_role add_role(:user) if self.roles.blank? end 除了记录被两次添加到users\u roles表中之外,这是有效的。为什么这个事件会触发两次,添加默认角色的最佳方式是什么 谢谢我们需要更多信息。你

Ruby中的Enumerable#each和Enumerable#each#u条目之间有区别吗?

没有明确说明每个都是每个_条目的别名,但是每个_条目的描述完全符合我对每个的期望 在这两个答案的示例中,定义了新的类,这些类实现了可枚举模块,并定义了每个方法 有人能举一个内置类的例子吗,比如Array或Hash,每个和条目的行为都不同?它们是不同的。使用RDoc中的示例: class Foo include Enumerable def each yield 1 yield 1, 2 yield end end Foo.new.each_entry{|o|

条件运算符在ruby中是如何工作的

为什么这句话不管用 1>2 ? puts "true" : puts "false" ,我发现大多数ruby操作符都像C一样,括号具有高优先级。这段代码是用C编写的 1 > 2 ? printf("true") : printf("false") 执行成功。为什么ruby代码不工作?错误表明三元运算符的优先级低于方法参数。Ruby围绕方法的第一个实例进行解析,将方法的最大值设置为: puts "true" 并查看是否有其他参数,如果有,则应在该参数前面加逗号。但你有一个冒号:

Ruby 尽管有错误,仍在for循环中向前移动

我有以下代码: require 'octokit' require 'csv' client = Octokit::Client.new :login => 'github_username', :password => 'github_password' repo = 'rubinius/rubinius' numbers = CSV.read('/Users/Name/Downloads/numbers.csv').flatten # at this point, essent

如何使用Ruby在图形中查找连接组件

找到图的连通分量的最简单方法是什么非强连接组件,可通过TSort模块找到 有一个库RGL,它在moduleRGL::Graph::each_connected_component中有一个方法,但是如何构建一个图并为此图调用此方法 我创建了一个示例图,如 g = RGL::DirectedAdjacencyGraph[1,2, 2,3, 4,5] 并且想要找到它的连接组件,它们是[[1,2,3],[4,5]],但是在g class RGL::DirectedAdjacencyGraph in

Ruby 使用Nokogiri提取RSS链接

我使用Nokogiri从网页中提取RSS链接。然而,由于一些网站在HTML上有绝对路径,而另一些则是相对路径,所以我想这样做,如果网站有相对路径,它将被设置为绝对路径 这是我的密码: require 'nokogiri' require 'simple-rss' require 'open-uri' ARGV.map! { |http| "http://#{http}"} ARGV.each do |website| doc = Nokogiri::HTML(open(website)) r

Ruby 什么是';包包做。。。结束';在厨师食谱里是什么意思?

我是ruby的新手。我知道recipe使用此语句更新包: package pkg do options platform_options['package_overrides'] action :upgrade end 我想知道“包”是否是一种方法?我认为它应该是一个方法,但我在Chef::Resource或Chef::Resource::Package类中都找不到方法定义。这个语句是如何执行的 在语法上-这是一个方法调用,是的。然后将一个参数pkg和一个“块”(简单地说,是一个匿名函

Ruby 提取标题标记下的多行内容

我发布了一个类似的问题,没有考虑到正文中的多行内容。我有一个类似的html,因此我想提取(使用Nokogiri)的“主体”: 我得到了这个数组: [ "Lorem ipsum 1", "Lorem ipsum 2", "<p>paragraph content 1</p>", "<b>Lorem ipsum 3</b>", "<p>paragraph content 2</p>", "Lorem ip

Ruby 从另一个文件调用模块

我试图在主脚本中调用一个模块。我使用require链接了这些文件。以下是我的代码的外观: module Ex36_method def m_defense puts "Do you want to play zone or man to man for this possession?" print "> " choice = $stdin.gets.chomp if choice.include? "zone"

Ruby 浮点除法中的不同结果

为什么在下面的每个计算中最后一个数字都不同?它们不应该是一样的吗 1.0 / 3 # => 0.3333333333333333 10.0 / 3 # => 3.3333333333333335 100.0 / 3 # => 33.333333333333336 浮点数不能精确地表示所有实数,而浮点数运算不能精确地表示真算术运算,这导致了许多令人惊讶的情况 我建议阅读: 您可以使用BigDecimal而不是float来解决大多数问题 require 'bigdecima

Ruby正在返回实际的换行符,而不是\n

我有一个文件“Foo.md”,其中包含三行: Foo Bar 我希望File.read(“Foo.md”)返回“Foo\n\nBar”当我从终端的irb运行它时,它会这样做,但当我从脚本(如 content = File.read('Foo.md') puts content 它返回的行转换为实际返回。我需要将该变量作为脚本中接下来的内容的单行 明确地说:我对更改行数不感兴趣,只是调试以确保变量内容作为一行传递。您仍在阅读“Foo\n\n\nBar”。但是,put解释特殊字符 您可以使用:

获取ruby中所有字符的索引

我正在尝试获取具有重复字符的字符串的索引。但如果我有相同的字符,它会不断返回该字符第一次出现的索引 str = "sssaadd" str.each_char do |char| puts "index: #{str.index(char)}" end Output:- index: 0 index: 0 index: 0 index: 3 index: 3 index: 5 index: 5 将枚举数#与_索引一起使用: str = "sssaadd

Ruby 捆绑安装后找不到gem

我正在尝试设置我的环境,以便对Travis CI的项目进行开发 我安装了rbenv来管理我的Ruby版本,我使用Ruby 2.2.3 然后我进行捆绑安装并安装gems 然后,当我尝试执行bundle exec rake时,我得到以下错误: Could not find CFPropertyList-2.2.8 in any of the sources Run `bundle install` to install missing gems. 此gem已安装。你能告诉我为什么Bundler找不

Ruby Watir Rails“浏览器窗口已关闭”,但未关闭任何内容

我要开始新的watir rails。我得到一个窗口未找到异常 Watir::Exception::NoMatchingWindowFoundException: 浏览器窗口已关闭 /Users/aaron/.rvm/gems/ruby-2.1.6/gems/watir-webdriver-0.9.1/lib/watir-webdriver/browser.rb:344:in'assert_exists' 我不确定这是否应该发生,但当我启动一个新的驱动程序时,14个窗口属于该驱动程序,但它们都不存

Ruby 在两个分隔符之间分块文件行

我是ruby新手,我正在尝试找出如何将文件的某些部分(行)组合在一起,以便以后可以按字母顺序排列每个组合的第一行。我没能找到这个 我已经了解了文件I/O以及将大型文件上载到内存中的问题,但这并不重要,因为我的文件静态大小约为70kB 我要问的是如何在两个不同的分隔符之间将文件中的行组合在一起,并排除文件中不符合条件的所有其他内容 即 file.txt= //RandomComment someObject:{ someKey:someValue }, //Another Random Com

Ruby let helper中的Rspec产量

如标题所示。是否有可能让某些东西“让”出来?就像这里: let(:call_request) { post :create, article: FactoryGirl.attributes_for(yield) } 当我尝试使用它时: it 'creates a new article' do expect { call_request { :article } }.to change(Article, :count).by(1) end 它说: ArticlesController P

如何使用Ruby`state\u machine`gem获取位于给定状态之前的状态列表?

考虑到gem,如何选择位于给定状态之前的一组状态名称/符号 假设我有四种状态::未决,:需要签名,:有序,:最终。假设从初始状态(:待定状态)到最终状态(:最终状态)呈线性渐进 我如何获得所有在:ordered之前的状态?我希望得到像[:pending,:signature\u needed]这样的结果 注意:我刚刚意识到,在试图弄清楚为什么不提供此功能后,状态机是(因为我准备制作一份添加此功能的PR)。在(当前未维护的)状态机gem中没有内置此类功能。由于非线性状态转换是完全可能的,因此准确地

Ruby 如何使用Minitest测试调用方法?

当调用post.save时,如何测试是否触发了Mailer.notify方法?并且有正确的论点 对于RSpec,我通常会: class Post def save Mailer.notify!('bla') true end end 提前谢谢你 您可以这样做: expect(Mailer).to receive(:notify!).with('bla') post.save 是的,这在RSpec中更简单、更直观…对于使用minitest进行模拟,我喜欢使用摩卡宝石 我

Ruby 将编号添加到其所在的相应索引中

嗨 我有一个方法,将数字添加到它所在的相应索引中。但我有两条规则: 索引从(1)开始 如果数字是倍数,请从其末尾删除第一个整数。例如,12将变成2 问题是我不确定如何在块中包含“if”语句,我认为我做得不对。我知道有一个更好的方法来写这个声明,但我发现它很难 例如: def incrementer(num) num.map.with_index(1) do |row, index| if row > 9 row.to_s.reverse.chop.to_i

Ruby 区分大小写的替换

我有一个字符串,可能包含单词“favorite”(美式英语)或大写的“favorite”。我想分别用英式拼写“favorite”或“favorite”替换它们,但不改变大写字母 我受够了 element.gsub!(/Favorite/i, 'Favourite') 它将始终大写第一个字母。我不想把它弄得太复杂,或者只是重复两个案例的替换。最好的解决方案是什么?您可以捕获第一个字母,然后使用\1反向引用将捕获的字母插入到后面: element.gsub!(/(f)avorite/i, '\1a

Ruby 尝试使用gem image\u下载器下载图像

这就是我目前所拥有的。 它使用gem图像下载程序 require 'rubygems' require 'image_downloader' downloader = ImageDownloader::Process.new('www.test.com','img_dir/') downloader.parse(:any_looks_like_image => true) downloader.download() ImageDownloader::Process.new方法第二个参数

将字符串放入控制台$stdin ruby时删除并替换文本

我有一个程序,它是一个客户端,使用套接字与服务器进行通信 当用户输入一条消息时,如果另一条消息进来,它会在视觉上分解文本,让用户很难理解 这种情况可以这样设想 c=0 p=线程。新do 环路{ #这是即将到来的消息 c+=1 放c 睡眠1 } 结束 g=线程。新do 环路{ #这是用户输入 放入$stdin.get } 结束 p、 加入 g、 加入 对于一些速度非常慢的打字机,输出结果与此类似 1 h2 el3 l4 o5 hello 6 在将字符串放入控制台时,有没有办法删除和替换文本

如何申请频道';s关于ruby的视频

我正在尝试请求一个频道的视频进行不和谐通知 这意味着我需要每分钟的数据 我只需要搜索,这意味着它要花费100美元 这只是我的爱好,我不想为此付钱 你知道我怎样才能在没有搜索的情况下获得上次上传的视频吗 如果您感兴趣,这里是我的代码: require "yt" Yt.configure do |config| config.api_key = 'mykey' end channel1 = Yt::Channel.new id: 'UCQjhFO_CA5e1-Ymopbfmx5Q' videos

如何在ruby中刮取下一页

我正在努力浏览网站的下一页https://www.jobsatosu.com/postings/search。因为有很多工作,所以有很多页面。我们的团队成功地抓取了第一页,如下所示: def initialize @agent_menu = Mechanize.new @page = @agent_menu.get(PAGE_URL) @form = @page.forms[0] 我正在努力刮下一页。另外,我们被告知在Ruby中使用Nokogir

Ruby 如何读取用载波上传的CSV文件

上传文件后,我尝试异步处理它。我试着这样做: csv = CSV.read(file.path, skip_blanks: true) 我得到这个错误: Errno::ENOENT: No such file or directory @ rb_sysopen - uploads/dc567b1282.csv 考虑到文件实际上不在我的文件系统中,我应该如何传递正确的参数来读取文件?还有其他选择吗

Ruby比较散列中的字符串

我准备了一个方法,它解析一个日志文件并返回一个哈希结果: parse def parse file_exist?(file_path) @page_views = Hash.new { |k, v| k[v] = [] } File.open(file_path).each do |line| page, ip = line.split @page_views[page] << ip end @page_views

向Ruby方法传递参数

似乎可以通过在方法后面追加参数并用空格分隔这两个参数来将参数传递给某些Ruby方法。我正在试图理解导致这种情况发生的机制。这就是参数在命令行中传递给脚本的方式。为什么下面的语句在Ruby中工作 item = 'orange' fruits = ['orange', 'grapefruit', 'apple'] x = fruits.include? item puts x 为什么下面的陈述不起作用 item = 'orange' fruits = ['orange', 'grapefruit'