Questions tagged «ruby»

Ruby是由松本行弘(Matz)于1995年创建的一种多平台开放源代码,动态的,面向对象的解释性语言。[ruby]标记用于与Ruby语言有关的问题,包括其语法和库。Ruby on Rails问题应标记为[ruby-on-rails]。


1
给定一个参数数组,如何将这些参数发送到Ruby中的特定函数?
原谅初学者的问题,但说我有一个数组: a = [1,2,3] 还有某处的功能;假设这是一个实例函数: class Ilike def turtles(*args) puts args.inspect end end 我该如何调用Ilike.turtles,a就像在打电话一样(Ilike.new).turtles(1,2,3)。 我熟悉send,但这似乎并没有将数组转换为参数列表。 我正在寻找的apply与之类似的Javascript等效于call但将数组转换为参数列表。

4
JSON文本必须至少包含两个八位字节
我收到此错误,并且找不到该问题的任何合理答案,因此我想写一个问题的摘要。 如果您在irb中运行此代码段: JSON.parse( nil ) 您会看到以下错误: TypeError: can't convert nil into String 我有点期待函数返回nil,而不是返回TypeError。如果使用转换所有输入to_s,则将看到八位字节错误: JSON::ParserError: A JSON text must at least contain two octets! 很好,很好。如果您不知道什么是八位位组,请阅读此文章以获取摘要和解决方案: 什么是JSON八位位组,为什么需要两个八位位组? 解 您要传递的变量是一个空字符串。不要尝试在JSON.parse方法中使用空字符串。 题 因此,现在我知道了错误的原因,应该使用哪种模式来处理此错误?我有点讨厌猴子修补JSON库以允许nil值。任何建议将不胜感激。
70 ruby-on-rails  ruby  json  irb 


2
我如何找出哪个宝石有特定的依赖性?
我注释掉了一个宝石,但是“捆绑安装”仍然无法运行。我如何找出哪个gem依赖sys-proctable? $ bundle install Fetching gem metadata from https://rubygems.org/......... Fetching gem metadata from https://rubygems.org/.. Resolving dependencies... Could not find sys-proctable-0.9.2 in any of the sources $ grep proctable Gemfile #gem 'sys-proctable', '0.9.2', :path => "vendor/gems" $ bundle list Resolving dependencies... Could not find gem 'rspec-rails (= 2.11.0) ruby' in the …

9
在Delayed_job中手动重试作业
Delayed :: Job的自动重试功能很棒,但是现在有一项我想手动重试的工作。有没有一种方法可以像我这样调用工作本身? Delayed::Job.all[0].perform 或跑步或其他。我尝试了一些事情,并整理了文档,但是不知道如何执行作业的手动重试。

6
查找符合给定条件的元素的索引
给定一个数组,如何找到与给定条件匹配的元素的所有索引? 例如,如果我有: arr = ['x', 'o', 'x', '.', '.', 'o', 'x'] 要找到项目所在的所有索引x,我可以这样做: arr.each_with_index.map { |a, i| a == 'x' ? i : nil }.compact # => [0, 2, 6] 要么 (0..arr.size-1).select { |i| arr[i] == 'x' } # => [0, 2, 6] 有没有更好的方法来实现这一目标?
70 ruby  arrays 


2
Rubocop 25行块大小和RSpec测试
典型的RSpec单元测试大量使用嵌套的Ruby块,以构造代码并利用DSL的“魔力”使规范读取像BDD语句: describe Foo do context "with a bar" do before :each do subject { Foo.new().add_bar } end it "looks like a baz" do expect # etc 在理想的规格中,每个示例都可以相对简短和精确。然而它似乎平常有外块增长到100行好事,因为RSpec的结构以这种方式工作,并没有考虑很多规格的例子,每一个可能有特定设置的几行,去describe那是块大小等于或大于所描述主题的代码。 Rubocop的最新升级带来了一条新规则,该规则不得超过25行。我不确定它的基本原理,因为它没有在Ruby样式指南中列出。我可以看到为什么这会是一件好事,并将其添加到默认规则集中。但是,升级后,我们的Rubocop测试多次失败,并显示以下消息tests/component_spec.rb:151:3: C: Block has too many lines. [68/25] 对于像Rubocop这样的代码度量工具,我喜欢使用“使用默认值,链接到样式指南,完成工作”的策略。(主要是因为辩论制表符与空格以及其他细节浪费时间,而且IME从未得到解决)这显然是不可能的,我们的两个核心数据质量工具不同意代码布局方法-或至少这就是我解释结果的方式,我认为我们编写规范的方式并没有本质上的错误。 作为响应,我们仅将Rubocop块大小规则设置为高阈值。但这让我感到奇怪-我想念什么?RSpec是否在代码布局中使用了现在不可信的方法?在RSpec测试中,我必须采取哪些合理的选择来减小块大小?我可以看到重组代码以避免大块代码的方法,但是它们无一例外都是纯粹为了满足Rubocop规则的丑陋的骇客,例如将所有块分解为辅助函数: def looks_like_a_baz it "looks like a baz" do expect # etc end end …
70 ruby  rspec  rubocop 


12
有没有办法避免自动更新Rails时间戳字段?
如果您有数据库列created_at,updated_at那么在创建和更新模型对象时,Rails会自动设置这些值。有没有一种方法可以保存模型而不接触那些列? 我要引入一些旧数据,我想从(不同名称)旧数据字段中的相应值中设置这些值。我发现在模型上设置它们然后保存模型时,Rails似乎会覆盖传入的值。 当然,我可以使用不同的命名方式来命名Rails模型列,以防止这种情况,但是在导入数据之后,我希望Rails执行其自动时间戳记功能。


4
我可以在OS X v10.6.8上升级到当前版本的Ruby(2.2.3)吗?
我正在查看“在Ruby on Rails上安装Ruby·Mac OS X Yosemite ”,并在说明中说要更新您的操作系统,这并不是我真正想要做的,因为我的计算机已经老化了。 我还找到了“如何在Mac上将Ruby更新到1.9.x? ”。据我所知,我没有RVM,如果我的系统要求仍然不够好,我担心还会再安装。 最终,我试图更新Jekyll,但是我需要先更新我的系统。我需要Ruby 1.9.3或更高版本。请问“如何在Mac上将Ruby更新到1.9.x?” 工作?我正在运行Ruby 1.8.7(2012-02-08 patchlevel 358)[universal-darwin10.0]'。 编辑:我最终没有安装RVM。对于那些将来会找到此页面的人,我遇到了以下问题/帮助页面: RVM安装期间如何解决“ gpg:找不到命令”错误? OS X Mavericks安装rvm警告 * WARNING: You have '~/.profile' file... RVM安装缺少$ PATH * WARNING: Above files contains PATH = with no$ PATHinside
69 ruby  macos  terminal 



By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.