Ruby:私有方法调用3:Fixnum

我试图了解这个简单函数的细微差别,但我不确定我需要做些什么来修复这个NoMethodError。 如何将“拆分”公开而不是私有? 这会解决问题吗? 这是我的代码: DATA = [3, 4, 5, 6, 7, 8] DATA.each do |line| vals = line.split print vals[0] + vals[1], ” ” end 这是我在IRB中运行时收到的错误消息: NoMethodError: private method `split’ called for 3:Fixnum

在Git中编写一个预推钩来grep所有文件的正则表达式想要拒绝push如果找不到正则表达式

我有以下预推钩。 理想情况下,如果任何文件的内容与顶部定义的正则表达式不匹配,我希望它能够遍历所有被推送到我的存储库的文件并拒绝推送。 尝试循环遍历文件时,我收到以下错误:“undefined method` each’for”“:String(NoMethodError)”。 ‘.each’不起作用,因为git命令返回包含已更改文件的字符串。 #!/usr/bin/env ruby regex = “\\s*GO\\s*$” localRef, remoteRef = ARGV #puts localRef #puts remoteRef input = $stdin.readlines[0] localSha = input.split(” “)[1] remoteSha = input.split(” “)[3] #puts localSha #puts remoteSha range = “#{remoteSha}..#{localSha}” #folderPath = `git rev-parse –show-toplevel` #puts folderPath `git diff –name-only –diff-filter=ACMR #{range}`.each do |file| #puts file content = […]

Ruby日期格式validation

我如何validation日期’2016-01-01’的格式是否正确(%Y-%m-%d)。 例如,如果日期格式正确,我想得到true或false 。 伪代码: if (‘2016-01-01’ == (%Y-%m-%d)) puts date is valid else puts date is not valid end 请帮忙, 谢谢!

鞋子包装问题

我使用packager为以下代码创建一个可执行文件: Shoes.app do stack :margin => 10 do @edit = edit_box :width => 1.0 do @para.text = @edit.text end @para = para “” end end 然后我收到错误信息: C:/ Program Files / Common Files / Shoes / 0.r1134 / lib / shoes.rb line 394utf.rb:10出错: 编译器错误 utf.rb:10:表达式中的char’\’377’无效 utf.rb:10:表达式中的char’\’337’无效 utf.rb:10:表达式中的char’\’337’无效 utf.rb:10:表达式中的char’\ 331’无效 utf.rb:10:表达式中的char’\’377’无效 utf.rb:10:表达式中的char’\’270’无效 utf.rb:10:表达式中的char’\ 304’无效 有人可以帮我一把吗? BR, DorianG

你能在ruby中的一行上动态初始化多个变量吗?

(我只编写了几个星期,这是我的第一个问题,所以请耐心等待!) 在ruby中,我知道你可以在一行上初始化多个变量,如下所示: a, b = 1, 2 但是,我想知道是否可以在一个也生成其名称的循环中初始化多个变量。 这是一些解释我的意思的伪代码: For X between 0 and 3, even_X = X * 2 这将设置even_0 == 0 , even_1 == 2 , even_2 == 4 , even_3 == 6 。 我意识到可以通过迭代创建一个数组然后调用它的成员来实现相同的function,但我仍然很好奇是否有办法做到这一点。 谢谢!

在没有if … else块的情况下处理Ruby中的ARGV

在一篇关于无条件编程的博客文章中,Michael Feathers展示了如何限制if语句作为降低代码复杂性的工具。 他用一个具体的例子来说明他的观点。 现在,我一直在考虑其他具体的例子,可以帮助我更多地了解无条件/ if更少/更少的编程。 例如,在这个cat clone中有一个if..else块: #!/usr/bin/env ruby if ARGV.length > 0 ARGV.each do |f| puts File.read(f) end else puts STDIN.read end 事实certificateruby有ARGF ,这使得这个程序更加简单: #!/usr/bin/env ruby puts ARGF.read 我想知道ARGF是否不存在如何重构上面的例子所以没有if..else块? 也对其他说明性具体示例的链接感兴趣。

Ruby中的Alnum类

Ruby语言的正则表达式中的类\p{Alnum}是什么? 它包含哪些字符,它与[:alnum:]有何不同?

在rspec中的控制器测试中使用rails“post”,并在路由上使用作用域和协议

我有一个rails项目,它正在生产中基本URL的子目录中运行,我希望它在dev中以这种方式运行,以使dev和prod尽可能接近。 我有路由文件设置如下: Foo::Application.routes.draw do def draw_routes root :to=>’foo#home’ resources :cats, :only=>[:create] do end if Rails.env.production? scope :protocol=>’http://’ do draw_routes end else scope :path=>”/foo”, :protocol=>’http://’ do draw_routes end end end 我的CatsController是这样的: class CatsController “Bob”) if @cat.save() redirect_to root end end end 我想测试我的Create Cat方法,所以我在spec / controllers / cats_controller_spec.rb中设置了一个rspec测试: require ‘spec_helper’ describe CatsController do describe “calling create cat […]

使用Assetic PHP安装RVM后Sass损坏

我正在尝试设置Assetic PHP资产编译器,并且我已经使用CoffeeScript,Stylus和Less(所有NPM包都能很好地工作)。 但是,有了萨斯,我遇到了问题。 以下是我到目前为止采取的步骤: 我安装了RVM和Ruby 1.9.3并运行了gem install sass 。 我跑了哪个sass 。 这返回了/home/jon/.rvm/gems/ruby-1.9.3-p0/bin/sass 。 我将该位置复制到Assetic中的SassFilter.php中,在构造函数中它表示$ sassPath =” 。 这与我做咖啡等的方式相同 现在,当我从主编译器文件解析PHP时,我收到以下消息: PHP Fatal error: Uncaught exception ‘RuntimeException’ with message ‘/home/jon/.rvm/rubies/ruby-1.9.3-p0/lib/ruby/site_ruby/1.9.1/rubygems/dependency.rb:247:in `to_specs’: Could not find sass (>= 0) amongst [bigdecimal-1.1.0, io-console-0.3, json-1.5.4, minitest-2.5.1, rake-0.9.2.2, rdoc-3.9.4] (Gem::LoadError) from /home/jon/.rvm/rubies/ruby-1.9.3-p0/lib/ruby/site_ruby/1.9.1/rubygems/dependency.rb:256:in `to_spec’ from /home/jon/.rvm/rubies/ruby-1.9.3-p0/lib/ruby/site_ruby/1.9.1/rubygems.rb:1208:in `gem’ from /home/jon/.rvm/gems/ruby-1.9.3-p0/bin/sass:18:in `’ ‘ in /home/jon/www/compilers/Assetic/Filter/Sass/SassFilter.php:158 […]

为什么我不能在类上下文中引用DATA?

在Ruby中,在__END__之后存储静态文本以便通过DATA IO对象进行任意使用非常方便: puts DATA.read # Prints “This is the stuff!” __END__ This is the stuff! 但是,当我尝试从新类的上下文中引用DATA对象时,我得到了意外错误(显然在Ruby 1.9.3和2.0中): class Foo STUFF = DATA.read # : uninitialized constant Foo::DATA (NameError) end class Foo STUFF = ::DATA.read # : uninitialized constant DATA (NameError) end 知道我怎么能做这个工作吗?