Tag: ruby

sqlite3 gem无法安装

我正在尝试在OS X 10.6上安装“sqlite3-ruby”gem(或“sqlite3”gem)。 我正在使用ruby-1.9.2,目前我得到以下内容: $ sqlite3 –version 3.7.4 $ sudo gem install sqlite3 Building native extensions. This could take a while… ERROR: Error installing sqlite3-ruby: ERROR: Failed to build gem native extension. /Users/folken/.rvm/rubies/ruby-1.9.2-head/bin/ruby extconf.rb checking for sqlite3.h… *** extconf.rb failed *** Could not create Makefile due to some reason, probably lack of necessary libraries and/or […]

Ruby数组减法,不会多次删除项目

Ruby中的规范数组差异示例是: [ 1, 1, 2, 2, 3, 3, 4, 5 ] – [ 1, 2, 4 ] #=> [ 3, 3, 5 ] 取而代之的是获得以下行为的最佳方法是什么? [ 1, 1, 2, 2, 3, 3, 4, 5 ].subtract_once([ 1, 2, 4 ]) #=> [ 1, 2, 3, 3, 5 ] 也就是说,只从第一个数组中删除第二个数组中每个匹配项的第一个实例。

Chrome 62和Flash

我有一个基于Flash的应用程序,我需要使用Cucumber进行测试。 由于默认情况下未启用闪存,因此我需要在每次测试之前启用它,并将我认为的url列入白名单。 如果我暂停测试的后台阶段,我可以手动设置这些选项。 我怎么能自动化这种方法,我已经考虑过添加options和preferences ,但似乎仍然无法开始工作。 所以这是我在env.rb文件中的标准设置 Capybara.register_driver :chrome do |app| chrome_binary = ‘/Applications/Google Chrome.app’ capabilities = Selenium::WebDriver::Remote::Capabilities.chrome(“chromeOptions” => { “binary” => chrome_binary + ‘/Contents/MacOS/Google Chrome’ }) Capybara::Selenium::Driver.new(app, :browser => :chrome, :desired_capabilities => capabilities, :options => options) end 进一步阅读强调了诸如此类的选项 options = Selenium::WebDriver::Chrome::Options.new options.add_argument(‘arg-here’) prefs = {“enable flash here ? “} options.add_experimental_option(“prefs”, prefs) undefined method add_experimental_option for […]

如何避免NoMethodError在嵌套哈希中缺少元素,而不重复nil检查?

我正在寻找一种避免在深层嵌套哈希中检查每个级别的nil的好方法。 例如: name = params[:company][:owner][:name] if params[:company] && params[:company][:owner] && params[:company][:owner][:name] 这需要三次检查,并且会产生非常难看的代码。 有办法解决这个问题吗?

如何解析CSV文件,更新字段,然后保存

我需要读取CSV文件,更新字段,然后保存更改。 除了将更改保存到我正在更新的字段之外,我的一切工作正常: require ‘csv’ @parsed_file = CSV::Reader.parse(File.open(“#{RAILS_ROOT}/doc/some.csv”)) @parsed_file.each_with_index do |row, x| address = row[5] l = Location.address_find(address) if l != nil puts “#{l.name} at #{l.address}” row[14] = l.store_code puts row[14] else puts “No matching address Found!!!” end #What do I do here? Something like this? CSV::Writer.generate(@parsed_file) end 我该怎么办? 如何保存我所做的更改并更新文件?

在Ruby中动态设置局部变量

我有兴趣在Ruby中动态设置局部变量。 不创建方法,常量或实例变量。 所以类似于: args[:a] = 1 args.each_pair do |k,v| Object.make_instance_var k,v end puts a > 1 我特别想要局部变量,因为所讨论的方法存在于模型中,我不想污染全局或对象空间。

为什么gems安装在一个目录中,其Ruby版本与我正在运行的版本不同?

当我安装gem时,它被安装在一个名为1.9.1的目录中,尽管它不是我安装的Ruby版本: $ ruby -v ruby 1.9.3p327 (2012-11-10 revision 37606) [x86_64-darwin12.2.0] $ gem which rails …/ruby/gems/1.9.1/gems/railties-3.2.9/lib/rails.rb 为什么会这样? 我没有安装其他Ruby版本(当然不是v1.9.1)。

为什么Ruby中的符号不​​被认为是一种变量?

编程和Ruby的新手,我希望这个关于符号的问题符合要求。 我理解Ruby中的符号(例如:book , :price )特别适合作为散列键,并且可以全面地完成字符串可以执行的轻量级特定子集。 但是,我在某方面对符号感到困惑。 具体来说,当它们在attr_accessor类型的方法中使用时,它们看起来更像是一个变量。 例如, attr_reader :book, :price 。 如果它们是该用法中的变量,那么这有点令人费解,因为它们通常不在变量类型中列出(如$ global,@ instance,local,@@ class,有时候,CONSTANT,变量类型)被描述。 如果符号是以这种方式使用的变量,那么应该对它们有什么范围? 或者它们在这种情况下仍然是某种轻量级的字符串? (或者也许以更广泛的方式,符号,字符串和变量都具有基本的鸭子性质?)提前感谢您的见解和建议。

如何要求在rails之外工作的活动记录

我需要活动记录,但我在rails之外工作(这就是为什么: 简单的Ruby输入validation库 )。 我需要整个rails gem,还是我可以DRYer?

带有has_many的counter_cache:通过

我刚刚创建了一个counter_cache字段,控制器看起来像这样。 @users = User.where(:sex => 2).order(‘received_likes_count’) User.rb中的关联是 has_many :received_likes, :through => :attachments, :source => :likes, :dependent => :destroy 问题是counter_cache是​​在Like.rb的belongs_to中声明的,我不知道如何告诉它是为了has_many:通过关联。 belongs_to :user, :counter_cache => :received_likes