如何使用Ruby旋转PDF文件

我正在尝试使用ruby旋转PDF文件(例如90或180度)。 我目前正在使用ImageMagick,但是我面临的问题是输出文件的质量下降了很多。 这是一个示例代码: new_image = Magick::Image.read(image_path).first new_image = new_image.rotate(degrees) new_image.write(image_path) 你知道应该使用什么技术/工具/库,以便在旋转PDF后不会失去任何质量。 谢谢

ruby中的模块和类变量范围

我仍然试图清楚地理解模块/类/实例变量…… 我的代码目前看起来像这样…… module Foo @@var1 ={} @@var2 =[] @@var3 = nil def m1(value) @@var2 << value end def m2(value) @@var1[@@var3]=value end end class Bar include Foo p @@var1 end class Bar2 include Foo p @var1 end 我正在尝试创建一个模块,其中包含每个类的行为方式的类范围配置。 配置存储在@@ var1和@@ var2中。 使用此代码,变量在包含该模块的所有类之间共享。 这不是期望的结果,我希望每个类都拥有自己的行为配置。 我还尝试创建一个包含模块的单个类,并创建变量,但模块无法访问变量。 module Foo def m1(value) @@var2 << value end def m2(value) @@var1[@@var3]=value end […]

处理嵌套哈希以将所有值转换为字符串

我有以下代码,它采用哈希并将所有值转换为字符串。 def stringify_values obj @values ||= obj.clone obj.each do |k, v| if v.is_a?(Hash) @values[k] = stringify_values(v) else @values[k] = v.to_s end end return @values end 所以给出以下哈希: { post: { id: 123, text: ‘foobar’, } } 我得到了YAML输出 — &1 :post: *1 :id: ‘123’ :text: ‘foobar’ 当我想要这个输出 — :post: :id: ‘123’ :text: ‘foobar’ 看起来该对象已被展平,然后被赋予对自身的引用,这导致我的规范中的堆栈级错误。 如何获得所需的输出?

类方法作为哈希值

我有这个工作代码: class Server def handle(&block) @block = block end def do @block.call end end class Client def initialize @server = Server.new @server.handle { action } end def action puts “some” end def call_server @server.do end end client = Client.new client.call_server 我的服务器将处理多个动作,所以我想以这样的方式更改代码: class Server def handle(options) @block = options[:on_filter] end def do @block.call end end class […]

如何在一个被Rails逃脱的正则表达式中取消?

我正在尝试将正则表达式存储在数据库中,但它们正在被rails转义。 例如, \w*\s\/\s \\w*\\s\\/\\s在数据库中和检索时变为\\w*\\s\\/\\s 。 我正在尝试将它们与mystring.sub(/#{regex_variable} /,”)一起使用,但是转义的正则表达式并不是所谓的匹配。 我们最好解决这个问题,以便正则表达式作为输入? 谢谢!

使用rvm在Mac OS Lion上安装pg gem

212-178-13-214:~ igorfedoronchuk$ gem install pg Building native extensions. This could take a while… /Users/igorfedoronchuk/.rvm/rubies/ruby-1.9.2-p180/lib/ruby/site_ruby/1.9.1/rubygems/ext/builder.rb:48: warning: Insecure world writable dir /usr/local/bin in PATH, mode 040777 ERROR: Error installing pg: ERROR: Failed to build gem native extension. /Users/igorfedoronchuk/.rvm/rubies/ruby-1.9.2-p180/bin/ruby extconf.rb checking for pg_config… yes Using config values from /usr/bin/pg_config checking for libpq-fe.h… *** extconf.rb failed *** Could not […]

Rails 5 – 使用编辑操作中的范围来查找特定实例的相关子项

我正在尝试学习如何在我的Rails 5应用程序中使用范围。 我在这里问了一个背景问题。 在我的Rails 5应用程序中有用户,提案和潜力的模型。 用户创建提案,然后他们自己和其他人可以创建评论。 模型之间的关联是: 用户 has_many :proposals, dependent: :destroy has_many :potentials 提案 belongs_to :user has_many :potentials, inverse_of: :proposal accepts_nested_attributes_for :potentials, reject_if: :all_blank, allow_destroy: true 潜在 belongs_to :proposal, inverse_of: :potentials belongs_to :user 在我的路线文件中,我有两个潜在的资源。 我不确定我是否已经离开了滑雪道 – 我无法找到一个如何做到这一点的例子。 我有两个: resources :potentials 以及: resources :proposals do resources :potentials 目的: 当提出提案的用户尝试编辑它时,我只希望该用户能够编辑他们自己创建的潜力。 我为潜力设置了两条路线的原因是嵌套资源在提案表单中有一个嵌套的表单字段,因此提案创建者可以通过这种方式获得潜力。 任何其他看到提案并具有潜力的用户都可以通过单独的表单来完成。 任何用户(包括提案创建者,都可以通过单独的表单编辑潜力),提案创建者也可以通过提案表单中的嵌套表单编辑自己的任何提案。 目前,每当我编辑提案表单时(即使我不编辑潜在的嵌套字段),所有潜力都会更新,以插入提案创建者的用户ID,覆盖实际的潜在创建者的用户ID。 解 我正在尝试限制投标控制器中的编辑操作,以便它只允许在具有user_id […]

根据给定的名称和+1计数器构建用户名(如果用户名已存在)

我尝试根据给定的名称构建用户名。 由于许多人被命名为“John”,我需要以某种方式检查这一点并通过+1计数来创建它。 我有点迷失在如何迭代ActiveRecord以找到一个名为john的用户名,然后如果已经存在,请尝试john1 ,如果不可用,请尝试john2 ,依此类推。 我可以假设它会使用while但我不知道如何迭代它的情况。 知道怎么做吗?

在课堂上产生<<自我在课堂上的方法

我想创建一个类方法,它接受一个方法定义块并将其注入到类中。 现在, self确实是Tom对象,所以class << self这个class << self确实打开它,但是yield似乎不起作用。 我的理论知识不是很深,所以我不确定为什么这不起作用。 我可能会完全错误,所以请随意讨论替代方案。 class Tom < Person mega_methods do def hiya! puts 'hiYA!' end end end class Person def self.mega_methods … class << self yield end end end Tom.hiya! 我知道我可以使用class << self来定义Tom的方法,或者我可以在块中包含class << self 。 我也想出了这个替代方案: def self.mega_methods &block if block_given? extension = Module.new(&Proc.new) self.extend(extension) end end 这个问题更多的是帮助我理解Ruby的工作而不是解决特定的问题。

在边界内的表面上分布点

我对在四边形表面(如正方形)上分布预定义数量的点的方法(算法)感兴趣。 主要问题是每个点必须具有彼此的最小和最大接近度(在两个预定义值之间随机)。 基本上任何两点的距离都不应该比说2更接近,而不是3。 我的代码将在ruby中实现(点是位置,表面是地图),但任何想法或片段都是受欢迎的,因为我的所有想法都包括相当多的蛮力。