如何在ruby中重构OpenSSL pkcs5_keyivgen?

我在过去的一年里在我的应用程序中使用了以下代码,使用此代码有200k记录: options = { :algorithm => ‘aes-256-cbc’, :value => “changethis”, :key => “secretkey” } cipher = OpenSSL::Cipher::Cipher.new(options[:algorithm]) cipher.send(:encrypt) cipher.pkcs5_keyivgen(options[:key]) result = cipher.update(options[:value]) result < “x\xED\x14s\xFD\x0E\x97\xC5\x996[M\x1E\x94\xDEI” 我需要(按业务)重构pkcs5_keyivgen部分,以正确执行:例如, options = { :algorithm => ‘aes-256-cbc’, :value => “changethis”, :key => “secretkey” } cipher = OpenSSL::Cipher::Cipher.new(options[:algorithm]) cipher.send(:encrypt) cipher.key = ” # ??? 1) How does pkcs5_keyivgen in above code […]

为什么Enumerable#find /#detect即使在Hash上调用也会返回一个数组?

Enumerable#find / #detect的文档说: find(ifnone = nil) { |obj| block } → obj or nil find(ifnone = nil) → an_enumerator 将枚举中的每个条目传递给块 。 返回第一个块不为false的块。 如果没有对象匹配,则调用ifnone并在指定时返回其结果,否则返回nil 。 但是,当在Hash上调用它时,结果将类型更改为Array而不是原始Hash。 是关于此数据类型的一些实现错误还是一些历史约定? {a: ‘a’, b:’b’}.find {|k, v| v == ‘b’} # => [:b, ‘b’]

lib文件夹中的模块类

我有一个lib文件lister_extension.rb module ListerExtension def lister puts “#{self.class}” end end 并发布模型 class Post < ActiveRecord::Base has_many :reviews extend ListerExtension def self.puts_hello puts "hello123123" end end 当我在rails c调用它时一切都很好: 2.1.1 :003 > Post.lister Class => nil 但是当我想在我的模块中添加一个类时会发生什么? 例如: module ListerExtension class ready def lister puts “#{self.class}” end end end 我收到这个错误 TypeError: wrong argument type Class (expected Module) 当我在rails […]

使用Net / http发布JSON格式的Ruby数据

我有这个ruby文件: require ‘net/http’ require ‘json’ require ‘uri’ #test data newAcctJson ='{ “type”: “Credit Card”, “nickname”: “MoreTesting”, “rewards”: 2, “balance”: 50 }’ #creates a new account def createAcct(custID, json) url = “http://api.reimaginebanking.com:80/customers/#{custID}/accounts?key=#{APIkey}” uri = URI.parse(url) http = Net::HTTP.new(uri.host, uri.port) myHash = JSON.parse(json) resp = Net::HTTP.post_form(uri, myHash) puts(resp.body) end 试图创建一个新帐户。 但是我得到code: 400, invalid fields in account 。 […]

如何在Ruby中使用Singleton设计模式创建类?

单例模式是一种设计模式,用于将类的实例化限制为一个对象实例。 虽然我知道如何用C ++和Java编写单例模式,但我想知道是否有人知道如何在Ruby中实现它?

Rails:如何选择没有特定相关(关联)对象的记录(SQL EXISTS简要操作方法)

假设我们有用户: class User < ActiveRecord::Base has_many :connections has_many :groups, through: :connections end 和团体: class Group < ActiveRecord::Base has_many :connections has_many :users, through: :connections end 基本上,标准的多对多连接: class Connection belongs_to :user belongs_to :group end 我打算做的是: 仅选择不属于给定的一组组的用户(具有ID的组[4,5,6] ) 仅选择属于一组( [1,2,3] )且不属于另一组( [4,5,6] )的用户 仅选择不属于组的用户 另外,我不想: 从数据库中获取大量数据以使用Ruby代码对其进行操作。 我知道在CPU和内存方面效率低下(Ruby比任何常用的数据库引擎慢得多,通常我想依靠数据库引擎来完成繁重的工作) 我尝试了像User.joins(:group).where(group_id: [1,2,3]).where.not(group_id: [4,5,6]) ,它们返回错误的结果(结果中的一些用户)集合属于组4,5,6 以及 1,2,3) 我不想仅仅为了检查存在而进行连接,因为我知道对于DB来说这是一个非常复杂的(即CPU /内存密集型)操作

无法使用ruby脚本从amazon s3删除文件

我正在使用aws-sdk-ruby来删除我的amazon s3帐户中保存在存储桶中的文件,但我无法弄清楚为什么我能够使用以下代码从S3存储桶中删除所需的文件。 这是我的代码 require ‘aws-sdk-v1’ require ‘aws-sdk’ ENV[‘AWS_ACCESS_KEY_ID’] = “XXXXXXX” ENV[“AWS_SECRET_ACCESS_KEY”] = ‘/ZZZZZZZZ’ ENV[‘AWS_REGION’] = ‘us-east-1’ s3 = Aws::S3::Resource.new bucket = s3.bucket(‘some-bucket’) obj = bucket.object(‘https://s3.amazonaws.com/some-bucket/38ac8226-fa72-4aee-8c3d-a34a1db77b91/some_image.jpg’) obj.delete

Ruby HTTP得到params

如何通过ruby发送带参数的HTTP GET请求? 我尝试了很多例子,但所有这些都失败了。

如何修复重复的标签?

用户可以提交习惯,目标,价值观和统计数据的标签。 当用户点击tag_cloud中的tag_cloud他会被重定向到包含该标签的所有实例的主页,但由于某种原因,属于Habits的实例正在重复。 有关为什么会这样的想法? pages_controller @habits = current_user.habits.tagged_with(params[:tag]) habit.rb class Habit < ActiveRecord::Base belongs_to :user acts_as_taggable before_save :set_tag_owner def set_tag_owner # Set the owner of some tags based on the current tag_list set_owner_tag_list_on(self.user, :tags, self.tag_list) # Clear the list so we don't get duplicate taggings (hmmm what does this mean? I copied this code & comment […]

Ruby – Array.find,但返回块的值

我有一个数组,我想要第一个块的结果返回一个truthy值(又名,不是nil)。 问题在于,在我的实际使用案例中,测试有副作用(我实际上是在一组队列上迭代,然后从顶部弹出),所以我不需要在第一次成功之后评估该块。 a,b,c = [1,2,3] [a,b,c].first_but_value{ |i| (i + 1) == 2 } == 2 a == 2 b == 2 c == 3 有任何想法吗?