启动Guard时,我得到这个输出: $ guard WARN: Unresolved specs during Gem::Specification.reset: lumberjack (>= 1.0.2) ffi (>= 0.5.0) WARN: Clearing out unresolved specs. Please report a bug if this causes problems. 这是什么意思,我该如何解决? Guardfile的内容: guard 'livereload' do watch(%r{.+\.(css|js|html)$}) end guard 'sass', :input => 'css', :style => :compressed, :extension => '.min.css'
如果我想在Ruby中require一个相关文件, 而且我希望它能在1.8.x和> = 1.9.2中工作,那么最佳做法是什么? 我看到几个选项: 只要做$LOAD_PATH << '.' 忘记一切 做$LOAD_PATH << File.dirname(__FILE__) require './path/to/file' 检查RUBY_VERSION <1.9.2,然后将require_relative定义为require ,然后在require地方使用require_relative 检查require_relative已经存在,如果是,则尝试按前面的方式继续 使用奇怪的结构,如 require File.join(File.dirname(__FILE__), 'path/to/file') – 唉,他们似乎并不在Ruby 1.9中工作,因为,例如: $ cat caller.rb require File.join(File.dirname(__FILE__), 'path/to/file') $ cat path/to/file.rb puts 'Some testing' $ ruby caller Some testing $ pwd /tmp $ ruby /tmp/caller Some testing $ ruby tmp/caller tmp/caller.rb:1:in 'require': […]
我使用Pry和Rails应用程序。 我在我的模型中的一个循环内设置了binding.pry来尝试和debugging一个问题。 例如: (1..100).each do |i| binding.pry puts i end 当我键入quit ,它进入下一个迭代,并再次停止。 有没有办法走出循环,所以我不必键入quit 100次? 目前我知道如何摆脱它的唯一方法是使用CTRL + C并重新启动应用程序。
我正在安装openshift客户端工具: https : //developers.openshift.com/en/getting-started-windows.html#client-tools 。 在“设置您的机器”一步,我得到错误: rhc设置C:/Ruby22-x64/lib/ruby/2.2.0/rubygems/core_ext/kernel_require.rb:54:在`require':无法加载这样的文件 – dl / import(LoadError) 全堆栈跟踪: C:/Ruby22-x64/lib/ruby/2.2.0/rubygems/core_ext/kernel_require.rb:54:in `require': cannot load such file — dl/import (LoadError) from C:/Ruby22-x64/lib/ruby/2.2.0/rubygems/core_ext/kernel_require.rb:54:in `require' from C:/Ruby22-x64/lib/ruby/gems/2.2.0/gems/net-ssh-2.9.2/lib/net/ssh/authentication/pageant.rb:1:in `<top (required)>' from C:/Ruby22-x64/lib/ruby/2.2.0/rubygems/core_ext/kernel_require.rb:54:in `require' from C:/Ruby22-x64/lib/ruby/2.2.0/rubygems/core_ext/kernel_require.rb:54:in `require' from C:/Ruby22-x64/lib/ruby/gems/2.2.0/gems/net-ssh-2.9.2/lib/net/ssh/authentication/agent/socket.rb:5:in `<top (required)>' from C:/Ruby22-x64/lib/ruby/2.2.0/rubygems/core_ext/kernel_require.rb:54:in `require' from C:/Ruby22-x64/lib/ruby/2.2.0/rubygems/core_ext/kernel_require.rb:54:in `require' from C:/Ruby22-x64/lib/ruby/gems/2.2.0/gems/net-ssh-2.9.2/lib/net/ssh/authentication/agent.rb:22:in `<top (required)>' from C:/Ruby22-x64/lib/ruby/2.2.0/rubygems/core_ext/kernel_require.rb:54:in `require' from C:/Ruby22-x64/lib/ruby/2.2.0/rubygems/core_ext/kernel_require.rb:54:in `require' from […]
这就是我现在所拥有的 – 对于正在做的工作来说,这看起来太冗长了。 @title = tokens[Title].strip! || tokens[Title] if !tokens[Title].nil? 假设令牌是通过分割CSV行获得的数组。 现在的function像strip! 的Chomp! 等。 如果string未被修改,则全部返回nil "abc".strip! # => nil " abc ".strip! # => "abc" 什么是Ruby的方式来说,如果它包含额外的前导或尾随空格,而不创build副本修剪它? 获取丑陋,如果我想做tokens[Title].chomp!.strip!
我的Rails视图和控制器乱七八糟的是redirect_to , link_to和form_for方法调用。 有时link_to和redirect_to在它们链接的path中是明确的(例如link_to 'New Person', new_person_path ),但是path隐含很多次(例如link_to 'Show', person )。 我添加了一些单表inheritance(STI)到我的模型(称为Employee < Person ),并且所有这些方法都会为子类的一个实例(称为Employee )分解。 当rails执行link_to @person , undefined method employee_path' for #<#<Class:0x000001022bcd40>:0x0000010226d038> , undefined method employee_path' for #<#<Class:0x000001022bcd40>:0x0000010226d038>发生错误。 Rails正在寻找一个由对象的类名定义的路由,这是员工。 这些员工路线没有定义,也没有员工控制器,所以这些操作也没有定义。 这个问题之前已经被问到: 在StackOverflow中 ,答案是在整个代码库中编辑link_to等的每个实例,并显式声明path 在StackOverflow上 ,两个人build议使用routes.rb将子类资源映射到父类( map.resources :employees, :controller => 'people' )。 在同样的SO问题中最好的答案build议使用.becomestypes转换代码库中的每个实例对象 另一个在StackOverflow中 ,最重要的答案是在Do Repeat Yourself阵营中,并build议为每个子类创build重复的脚手架。 在这里 ,同样的问题再次出现在最上面的答案似乎是错的(Rails magic Just Works!) 在networking上的其他地方,我发现F2Andybuild议在代码中的任何地方编辑path。 在逻辑现实devise的单表inheritance和RESTful路由的博客文章中,build议将子类的资源映射到超类控制器,如上面的第二个回答中所述。 […]
一般来说,与Struct相比,使用OpenStruct有哪些优缺点? 什么types的一般用例适合每一种?
例如,要生成3到10之间的随机数,我使用: rand(8) + 3 有没有更好的方法来做到这一点(像rand(3, 10) )?
我有一些简单的shell脚本任务,我想要做的 例如:从匹配一些正则expression式的文件列表中select工作目录中的文件。 我知道我可以使用标准的bash和grep来做这种事情,但是我会很高兴能够攻破快速脚本,这些脚本可以在windows和linux下工作,而不必记住一堆命令行程序和标志等。 我试图让这个去,但结束了我应该得到的信息,如引用到当前目录的困惑 所以问题是Ruby库的哪些部分我需要知道编写ruby shell脚本?
这种创build私有类方法的方法是如何工作的: class Person def self.get_name persons_name end class << self private def persons_name "Sam" end end end puts "Hey, " + Person.get_name puts "Hey, " + Person.persons_name #=> raises "private method `persons_name' called for Person:Class (NoMethodError)" 但是这不是: class Person def self.get_name persons_name end private def self.persons_name "Sam" end end puts "Hey, " + Person.get_name puts […]