使用Zlib压缩ruby中的大文件以获取gzip

我有一个非常大的文件,约。 2亿行数据。 我想用Zlib库压缩它,特别是使用Writer。 一次读取每一行似乎需要花费相当多的时间。 有没有更好的方法来实现这一目标? 这就是我现在所拥有的: require ‘zlib’ Zlib::GzipWriter.open(‘compressed_file.gz’) do |gz| File.open(large_data_file).each do |line| gz.write line end gz.close end

ActiveRecord has_many:通过在批量分配上复制计数器缓存

似乎ActiveRecord的counter_cachefunction可能导致计数器缓存递增两次。 我看到这种行为的场景是当我有两个模型具有has_many :through连接模型相互关系(即: Teacher有很多Student通过Classroom )。 使用has_many :through生成的方法直接关联教师和学生(无需手动创建连接记录)时,计数会增加2倍。 示例: teacher.students << Student.create(name: "Bobby Joe")导致teacher.students_count增加2。 请帮助我找到一个缓解或消除此问题的解决方案,同时允许我通过has_many :through关系继续使用内置计数器缓存和批量分配。 我花了很多时间寻找解决方案并将问题解决到一个小的测试应用程序,这是我可以创建的最简单的失败示例。 任何有助于我解决此问题的额外细节都应该在下面。 示例模式和模型: create_table :teachers do |t| t.string :name t.integer :students_count, default: 0 t.timestamps end class Teacher :classrooms end create_table :students do |t| t.string :name t.integer :teachers_count, default: 0 t.timestamps end class Student :classrooms end create_table :classrooms do |t| t.references […]

使用HTTParty进行非常基本的Rails 4.1 API调用

Rails相对较新。 我试图调用一个API,它应该返回一个唯一的URL给我。 我在我的应用程序上捆绑了HTTParty。 我已经创建了一个UniqueNumber控制器,我已经阅读了几个HTTParty指南,只要我想要的东西,但也许我只是有点迷失,真的不知道该怎么做。 基本上,我需要做的就是调用API,获取它返回的URL,然后将该URL插入到用户的数据库中。 有人能指出我正确的方向或与我分享一些代码吗?

如何从一个范围返回一系列日期和小时?

如何从一个范围返回一系列日期和小时? 到目前为止,我尝试过: (48.hours.ago..Time.now.utc).map { |time| { :hour => time.hour } }.uniq 返回: [{:hour=>1}, {:hour=>2}, {:hour=>3}, {:hour=>4}, {:hour=>5}, {:hour=>6}, {:hour=>7}, {:hour=>8}, {:hour=>9}, {:hour=>10}, {:hour=>11}, {:hour=>12}, {:hour=>13}, {:hour=>14}, {:hour=>15}, {:hour=>16}, {:hour=>17}, {:hour=>18}, {:hour=>19}, {:hour=>20}, {:hour=>21}, {:hour=>22}, {:hour=>23}, {:hour=>0}] 不理想,因为它每秒迭代一次。 这需要很长时间。 我收到几条警告信息说: /Users/Chris/.rvm/gems/ruby-1.9.2-p290/gems/activesupport-3.2.2/lib/active_support/time_with_zone.rb:328: warning: Time#succ is obsolete; use time + 1 我试图返回类似的东西: [{:day => 25, :hour=>1}, {:day => […]

Rspec测试页面内容中的html实体

我正在编写请求规范,并希望测试字符串“Reports»Aging Reports”的存在。 我得到一个错误(无效的多字节字符),如果我直接在我的匹配表达式中输入字符,所以我尝试了这个: page.should have_content(“Reports » Aging Reports”) 这使测试失败并显示以下消息: expected there to be content “Reports » Aging Reports” in “\n Reports » Aging Reports\n 我尝试过像.html_safe这样的东西没有成功。 有没有办法测试包含html实体的文本? 编辑: 这是html源代码的相关区域: Reports » Aging Reports

从slack bot访问Slack文件

我需要一个能够接收和保存来自松弛聊天室的文件的松散机器人。 问题是:slack不发送文件内容,而是指向文件的链接数组。 其中大多数,包括下载链接都是私有的,无法通过bot访问。 它确实发送了一个公共链接,但该链接指向文件预览,它没有文件本身( 这是一个例子 )。 所以问题是:如何通过bot访问上传的文件?

更改Rubygem源的阅读顺序

我创建了一个我自己托管的私有gem。 一切顺利,直到有人在rubygems.org上创建了一个同名的gem。 由于rubygems.org优先于我的gem服务器url。 我不能再安装我的gem了。 我试图删除rubygems源: $ sudo gem source -r http://rubygems.org 并重新安装它,以便它在gem源列表中,但它不起作用。 有没有办法改变gem源的查找顺序? 请注意,我不想重命名我的gem。

Jekyll Pagination在每一页上

我们知道Jekyll默认分页只支持index.html,我想在那里创建blog.html include分页。 对此有何解决方案?

如何使–no-ri –no-rdoc成为gem install的默认设置?

可能重复: 如何使–no-ri –no-rdoc成为gem install的默认设置? 我从不使用ri或rdoc,安装时间太长。 是否有一个配置文件可以让我这样做

在点击Google Contacts API时出现“按对等方重置连接”错误

我正在尝试使用Google Contacts API将Google Contacts添加到Rails应用程序中。 我已完成Oauth2握手,现在正在使用我的访问令牌请求受保护资源。 这是代码: uri = URI(‘https://www.google.com/m8/feeds/contacts/default/full’) params = { :client_id => APP_CONFIG[:google_api_client_id], :access_token => auth.access_token, “max-results”.to_sym => max_results } uri.query = URI.encode_www_form(params) res = Net::HTTP.get_response(uri)