在url_for中使用到期时,Amazon S3无效日期

我在Amazon s3存储桶中创建了一个文档。 然后我尝试创建一个已签名的URL,该桶将在几年后到期,如下所示: s3 = AWS::S3.new(:access_key_id => S3Config.access_key_id, :secret_access_key => S3Config.secret_access_key) bucket = s3.buckets[S3Config.bucket] bucket.objects[s3_key].url_for(:read, :expires => Time.at(Time.utc(2019,12,30)).to_i) 但是当我导航到签名的URL时,我收到以下错误消息: Invalid date (should be seconds since epoch) 但是根据Time.at的ruby文档和我对时代的理解,这应该有用 ……我做错了什么?

有没有办法使用HashWithIndifferentAccess序列化ActiveRecord的JSON属性?

我在Rails应用程序中使用ActiveRecord::ConnectionAdapters::PostgreSQLAdapter 。 假设我有一个架构: create_table “foo”, id: :bigserial, force: :cascade do |t| t.string “name” t.jsonb “data”, null: false end 现在假设我运行以下代码: class Foo ‘foobar’, :data => {:a => ‘hello’}) my_foo = Foo.where(:name => ‘foobar’).first! puts my_foo.data[:a] puts my_foo.data[‘a’] 输出将是: # nil # ‘hello’ 是否可以让ActiveRecord使用HashWithIndifferentAccess自动反序列化jsonb类型?

BSON :: ObjectId vs Mongo :: ObjectID

在在线API中,它们指的是Mongo::ObjectID 。 我require ‘mongo’但仍然没有找到它。 例如,我需要通过Id找到一个对象,我正在做: mongo_db[‘post’].find({_id: Mongo::ObjectID(params[:id])}).next 它似乎无法找到Mongo :: ObjectID并导致: NoMethodError – undefined method “ObjectID’ for Mongo:Module: 所以过了一段时间我开始require ‘bson’并且正在做 mongo_db[‘post’].find({_id: BSON::ObjectId(params[:id])}).next 它工作了! 那么BSON :: ObjectId和Mongo :: ObjectID之间的区别是什么?我需要做些什么来使后者工作(我真的需要)吗? PS:我有 bson (1.5.2, 1.4.1) Authors: Jim Menard, Mike Dirolf, Kyle Banker Homepage: http://www.mongodb.org Installed at (1.5.2): /usr/local/lib64/ruby/gems/1.9.1 (1.4.1): /usr/local/lib64/ruby/gems/1.9.1 Ruby implementation of BSON mongo (1.5.2, 1.4.1) Authors: Jim […]

Ruby#等效的C#’using’语句

在过去的几个月里我一直在使用Ruby,但是我还没想到的一件事是using语句的Ruby等价的C#(和其他语言)。 我一直在使用require语句声明我对Gems的依赖,但是我变得懒惰,并且宁愿不完全限定我经常使用的类名和模块(名称空间)名称。 当然这是可能的,对吧? 我一定不能使用正确的术语,因为谷歌没有给我任何有用的东西。

如何在控制台中调用ruby中的某个方法

假设我有两种方法的ABC类。 class ABC def test “test” end def display_test puts test end end 我只希望能够从我的控制台(IRB)调用ABC.new.display_test (返回’test’)并且无法调用ABC.new.test或ABC.new.send(:test) 。 这可能吗? 如果是这样,怎么样?

你如何使用Fabrication定义特征

我正在学习如何在Rails使用制造 ,我们决定用制造代替所有的factory_girl代码。 假设我们在factory_girl有这个代码 FactoryGirl.define do factory :user do trait(:no_credits) { credits 0 } trait(:with_credits) { credits 300 } 你将如何在Fabrication中定义这个? 我已经浏览了他们的网站,但找不到任何相关的内容。 非常感谢您的帮助

RMagick安装无法构建本机扩展

在山狮我试图安装RMagick。 我在GitHub上发现了一个问题,解决方案应该是命令gem pristine rmagick 。 但是当我运行它时,我得到: ERROR: While executing gem … (Gem::Exception) Failed to find gems [“rmagick”] >= 0 当我运行gem install rmagick ,我收到了这个巨大的错误: Building native extensions. This could take a while… ERROR: Error installing rmagick: ERROR: Failed to build gem native extension. /Users/xxxxx/.rvm/rubies/ruby-1.9.3-p327/bin/ruby extconf.rb checking for Ruby version >= 1.8.5… yes extconf.rb:128: Use RbConfig instead […]

Rails从模型生成迁移

我一直在阅读有关Rails迁移的内容,以帮助我开始构建rails项目。 我对db / migrate中的文件生成感到困惑。 我设计应用程序的方式是从模型开始……尽可能地概述我将在系统中拥有的所有对象。 我想使用rails迁移生成器自动生成这些模型的迁移文件。 是的,我知道“手动创建迁移很容易。” 而且我知道我可以手动完成,但我不明白的是为什么该工具与预先创建的模型分开。 根据我对文章的理解以及关于SO的其他迁移问题,我可以生成如下迁移: rails generate migration SomeObj field:string some_other_field:integer 我没有得到的是为什么当我的模型已存在于SomeObj时我需要传入字段? Rails无法从some_obj.rb中检测到它并从那里创建迁移吗? 此外,当我有一个更复杂的模型,使用has_many,belongs_to和has_to_and_belongs_to_many关系时,如果它使用正确的名称自动处理JOIN表和字段(例如foreign_obj_id,foreign_obj_ids)将会非常好。 在之前的项目中,我不必处理迁移,因为我使用了Mongo + Mongoid – 由于Mongo工作原理的性质而自动生成集合(不存在的集合在插入或更新时自动创建)。 现在使用这个Rails应用程序我正在使用Postgres(但我确信MySQL或任何其他关系数据库会发生同样的事情)。 无论如何,这种事情没有帮手吗? 我是否必须手动创建所有这些迁移?

安装mysql2 gem时出错:无法构建gem原生扩展

Windows XP。 Ruby 1.9.2。 安装了Rails。 MySQL已安装。 当我尝试运行gem install mysql2 (或bundle install )时,我收到错误: C:\ruby\cred2>gem install mysql2 Building native extensions. This could take a while… ERROR: Error installing mysql2: ERROR: Failed to build gem native extension. C:/Ruby192/bin/ruby.exe extconf.rb checking for rb_thread_blocking_region()… *** extconf.rb failed *** Could not create Makefile due to some reason, probably lack of necessary […]

内核#__ method__似乎在动态定义的方法中无法正常工作

我一直在尝试动态定义Ruby 1.9中的一些实例方法。 这是我用来尝试这个的代码: class Testing [:one, :two].each do |name| define_method(name) do puts __method__ end end end 这是输出: ruby-1.9.2-p180 :008 > t = Testing.new => # ruby-1.9.2-p180 :009 > t.one two => nil ruby-1.9.2-p180 :010 > t.two two => nil ruby-1.9.2-p180 :011 > 我希望结果分别是one和two 。 如果我在迭代之外调用每个的define_method它按预期工作。 我在这里不理解什么? 以下是我在网上看到的在迭代中调用define_method的众多示例之一。 使用define_method动态定义的setter方法? 少了什么东西? 另外:使用__method__对我来说并不重要,但这是我展示的最佳方式,似乎只有发送到define_method的最后一个块被用于定义的方法。 也许这开始向我解释问题,但我仍然不明白..