Tag: ruby

获得sinatra的绝对(基础)url

现在,我做了 get ‘/’ do set :base_url, “#{request.env[‘rack.url_scheme’]}://#{request.env[‘HTTP_HOST’]}” # … haml :index end 能够在HAML index.haml中使用options.base_url。 但我相信有更好的,干的,这样做的方式。 然而,我看不到,也找不到它。 (我是Sinatra的新手:)) 不知何故,在get之外,我没有request.env可用,或者看起来如此。 因此将它放入包含中并不起作用。 你如何得到你的基本url?

ThreadPool中的死锁

我找不到适合Ruby的ThreadPool实现,所以我写了我的(部分基于这里的代码: http : //web.archive.org/web/20081204101031/http : //snippets.dzone.com : 80/ posts / show / 3276 ,但更改为等待/信号和ThreadPool关闭的其他实现。但是经过一段时间的运行(有100个线程并处理大约1300个任务),它在第25行死机 – 它等待一个新的工作那里。任何想法,为什么会发生? require ‘thread’ begin require ‘fastthread’ rescue LoadError $stderr.puts “Using the ruby-core thread implementation” end class ThreadPool class Worker def initialize(callback) @mutex = Mutex.new @cv = ConditionVariable.new @callback = callback @mutex.synchronize {@running = true} @thread = Thread.new do while @mutex.synchronize […]

如何将Paypal与Ruby on Rails集成

我试图使用rest-api-sdk-ruby gem( https://github.com/paypal/rest-api-sdk-ruby )将paypal与我的ruby集成在rails应用程序上,但无法找到足够的信息或者支持我的好教程。 上面提供的描述虽然提供了必要的代码,但没有说明如何处理每种方法应该使用的文件或文件。 谁能在这里给我一个起点或指向一个好的教程? 我正在使用rails版本4。 非常感谢。

如何要求rubygems帮助找到rubygem文件?

在尝试解决irb中发现的Gem时,不是在Ruby中 ,我试着看看require ‘rubygems’对我自己的安装有什么影响: $ irb irb(main):001:0> RUBY_VERSION => “1.8.7” irb(main):002:0> $: [“/usr/local/lib/site_ruby/1.8”, “/usr/local/lib/site_ruby/1.8/x86_64-linux”, “/usr/local/lib/site_ruby”, “/usr/lib/ruby/vendor_ruby/1.8”, “/usr/lib/ruby/vendor_ruby/1.8/x86_64-linux”, “/usr/lib/ruby/vendor_ruby”, “/usr/lib/ruby/1.8”, “/usr/lib/ruby/1.8/x86_64-linux”, “.”] => nil irb(main):003:0> require “rubygems” # Hasn’t been required already => true irb(main):004:0> require “rubygems” # Will return false, because it’s already been required => false irb(main):005:0> $: # Same as before => [“/usr/local/lib/site_ruby/1.8”, “/usr/local/lib/site_ruby/1.8/x86_64-linux”, […]

Ruby将数组转换为嵌套哈希

我有以下内容: value = 42 array = [“this”,”is”,”a”,”test”] 我怎样才能转换它来获得这个 { “this” => { “is” => { “a” => { “test” => 42 } } } } arrays总是平坦的。 谢谢!

has_many同时尊重factory_girl中的构建策略

情况 # Models class User < ActiveRecord::Base has_many :items end class Items :user) do |u| u.items {|items| [items.association(:item), items.association(:item)]} end Factory.define(:item) do |i| i.color “red” end Factory.define(:item_with_user, :parent => :user) do |i| i.association(:user) end 问题 如果你运行@user = Factory(:user_with_items)那么@user.items包含这两个项目。 问题是这些项目与数据库中的用户没有关联。 如果你重新加载关联@user.items(true)那么你会得到一个空数组。 我知道你可以手动构建它们或者自己创建辅助方法来构建对象图,但我想避免这种情况。 题 所以,我的问题是如何在尊重构建策略的同时在factory_girl中建立一个has_many关系?

自定义表单助手

有没有办法可以创建自定义表单助手,而不是: special_field_tag :object, :method 我可以实现以下目标: form.special_field :method

Rails将validation放在模块mixin中?

在我的模型中,一些validation是重复的: validates :name, :length => { :minimum => 2 }, :presence => true, :uniqueness => true validates :name_seo, :length => { :minimum => 2 }, :presence => true, :uniqueness => true 我怎么把它放在mixin中? 如果我把它们放在mixin中,我会收到这个错误 app/models/validations.rb:5: undefined method `validates’ for Validations:Module (NoMethodError)

第二部分:如何使Ruby AES-256-CBC和PHP MCRYPT_RIJNDAEL_128一起发挥得很好

这个问题是我最后一个问题的延续,关于如何使Ruby AES-256-CBC和PHP MCRYPT_RIJNDAEL_128很好地协同工作 。 我现在已经开始工作,但我仍然在努力朝着另一个方向努力。 PHP生成的密码似乎具有所提供的所有信息,但是我无法使用Ruby代码来解密它而不会出错。 这是我用来生成密码的PHP代码: $cleartext = “Who’s the clever boy?”; $key = base64_decode(“6sEwMG/aKdBk5Fa2rR6vVw==\n”); $iv = base64_decode(“vCkaypm5tPmtP3TF7aWrug==”); $cryptogram = mcrypt_encrypt(MCRYPT_RIJNDAEL_128, $key, $cleartext, MCRYPT_MODE_CBC, $iv); $result = base64_encode($cryptogram); print “\n’$result’\n”; RESULT ‘JM0OxMINPTnF1vwXdI3XdKI0KlVx210CvpJllFja+GM=’ 然后这是尝试在Ruby中解密: >> cipher = OpenSSL::Cipher::Cipher.new(‘aes-128-cbc’) >> cipher.key = Base64.decode64(“6sEwMG/aKdBk5Fa2rR6vVw==\n”) >> cipher.iv = Base64.decode64(“vCkaypm5tPmtP3TF7aWrug==”) >> cryptogram = Base64.decode64(‘JM0OxMINPTnF1vwXdI3XdKI0KlVx210CvpJllFja+GM=’) >> cleartext = cipher.update(cryptogram) => […]

渴望加载:正确的做事方式

我正在运行Ruby on Rails 3.1。 我阅读了以下关于急切加载的文章和文档,我想找到一个正确的方法来做事: 渴望加载协会 [官方文档] ActiveRecord :: Associations :: ClassMethods (参见“渴望加载关联”一节)[官方文档] 渴望加载 [博客文章] #2说: 请注意,使用Post.includes([:author,:comments])等条件,其中([‘comments.approved =?’,true])。all都会产生意想不到的后果。 #3表示那些意想不到的后果是( 注意 :示例非常相似所以我引用了博客文章的确切文本,但你必须记住解决方法,而不是具体的实现): 此查询,因为它将使用LEFT JOIN,也会丢弃所有post,而不会在其任何评论上添加带有“first”字样的评论。 也就是说,如果存在非“关联”对象,则不会加载“主关联”对象。 当我尝试通过在我之前的问题中 添加诸如.where(:category_relationships => {:user_id => @current_user.id}) 条件来尝试使用预先加载时会发生这种情况,但我不希望这种情况发生。 所以(失败者因为我可能无法在我的情况下使用急切加载,其中条件无法在has_many语句中设置 – 请注意,在上面的代码中, @current_user.id是“动态设置”,与上述网站中的示例不同) , 我想知道是否有pratiques /技术/策略以限制数据库查询,因为我有一个“N + 1问题” 。 也许这些pratiques /技术/策略可以通过使用Ruby on Rails框架来实现…… #1说: 即使Active Record允许您像加入一样指定热切加载关联的条件,但推荐的方法是使用联接。 什么以及如何以正确的方式解决这个问题? 也许解决方案是通过运行特定的和分离的数据库查询来检索和构建自己需要加载的内容,但问题是如何“检索”/“关联”/“插入”那些检索到的“关联”对象到“主要相关的“对象,以便那些可以使用”一个là急切加载“的方式? 也就是说,如何使用@article.comments类的代码(参见上述问题以获取更多信息)并获得我自己急于加载的评论? 在我急切加载之后,是否有可能 / 正确地制作类似@article.comments = […]