小编Vir*_*ren的帖子

设计valid_password的奇怪问题?

在过去的两个小时里,我一直在尝试调试设计中的一个奇怪的问题,这不是让我登录.

这也是我所指的东西:

password 
=> 'vinodsobale'

password == 'vinodsobale'
=> true

resource.valid_password?(password)

=> false

resource.valid_password?('vinodsobale')

=> true
Run Code Online (Sandbox Code Playgroud)

附上截图:

在此输入图像描述 注意:我在设计中启用了调试器,因此上面的代码是设计内部代码.

对我来说,它看起来像是一个问题Devise.secure_compare.

ruby-on-rails devise ruby-on-rails-3.2

78
推荐指数
1
解决办法
2896
查看次数

Redis在没有迭代的情况下获取列表的所有值而不弹出

我有简单的redis list key =>"supplier_id"

现在我想要它检索列表的所有值而不实际迭代或弹出列表中的值

从列表中检索所有值的示例现在我已经迭代了redis长度

element = []
0.upto(redis.llen("supplier_id")-1) do |index| 
  element << redis.lindex("supplier_id",index)
 end
Run Code Online (Sandbox Code Playgroud)

这可以在没有迭代 perhap的情况下完成,具有更好的redis建模.有谁能建议

redis

61
推荐指数
1
解决办法
5万
查看次数

Iphone localStorage"QUOTA_EXCEEDED_ERR"问题

我尝试在HTML5(localStorage)中使用Client Side Storage for Iphone Application,我完全知道localStorage(目前是5MB)的" QUOTA " .

现在的问题是我的应用程序(以前没有存储数据).尝试将数据存储在localStorage中导致QUOTA_EXCEEDED_ERR,尽管整体数据的大小小于5 MB(精确到~4.5b(在普通浏览器中使用chrome web inspector找到))

任何人都可以分享一下这个数据如何称重4Kb导致QUOTA_EXCEEDED_ERR当相同5MB的上限时

请注意,问题仅发生在iPhone上,所有浏览器甚至iPhone模拟器都没有提示QUOTA_EXCEEDED_ERR错误

iPhone目前的图片是iPhone 4.

iphone html5 local-storage ios

20
推荐指数
3
解决办法
2万
查看次数

获取Google Cloud Compute中的内存和CPU使用情况

一度如何设置访问Google Cloud Compute中给定项目中所有实例的CPU使用率和内存使用率

我在文档中找不到任何相同的内容.

google-compute-engine google-cloud-platform

14
推荐指数
2
解决办法
2万
查看次数

红宝石块内的赛璐珞异步不起作用

尝试在我的工作示例中实现Celluloid 异步似乎表现出奇怪的行为.

这里我的代码看起来

 class Indefinite
    include Celluloid

      def run!
         loop do 
           [1].each do |i|
             async.on_background
           end
         end
      end 


       def on_background
         puts "Running in background" 
       end
   end

   Indefinite.new.run!
Run Code Online (Sandbox Code Playgroud)

但是当我运行上面的代码时,我从未看到过" 在后台运行 "

但是,如果我睡觉,代码似乎工作.

class Indefinite
   include Celluloid

    def run! 
      loop do 
        [1].each do |i|
          async.on_background
        end
        sleep 0.5
      end 
    end


   def on_background
     puts "Running in background" 
   end
 end

 Indefinite.new.run!
Run Code Online (Sandbox Code Playgroud)

任何的想法?为什么在上述两个场景中存在这样的差异.

谢谢.

ruby celluloid ruby-2.2

14
推荐指数
1
解决办法
1426
查看次数

使用CarrierWave设置自定义错误消息

我有一个在carrierwave上运行的图像上传应用程序,它限制用户只上传所需扩展名的图像'jpg,jpeg,png'我已经在我的上传器中定义了对carrierwave的验证定义为

def extension_white_list
  %w(jpg jpeg png)
end
Run Code Online (Sandbox Code Playgroud)

现在,任何尝试上传具有与所需扩展名不同的扩展名的图像(如上所述)都会导致验证错误

我想自定义验证错误消息

现在错误消息显示为

You are not allowed to upload "" files, allowed types: ["jpg","jpeg","png"]
Run Code Online (Sandbox Code Playgroud)

任何人都可以帮助我找到这个链接的人提到如何实现这一点

但它有些问题

1. I18n support I dont require to translate the error message using I18n 

2. The 'Key' to be used I not sure which key to used in YAML for
    not matching extension whitelist error message (e.g) carrierwave_processing_error key if error is for processing failure
Run Code Online (Sandbox Code Playgroud)

请给我一个CarrierWave的答案,请不要让我为扩展匹配编写单独的验证集

ruby-on-rails carrierwave

12
推荐指数
3
解决办法
8136
查看次数

覆盖Devise的注册控制器,以便在sign_up成功完成后允许重定向

我到处都看了一眼,发现了很多信息...但是没有什么对我有用而且我没有得到它:(

我知道你应该覆盖注册控制器,如下所示:

class Users::RegistrationsController < Devise::RegistrationsController

def after_sign_up_path_for(resource)
  authors_waiting_path
end 

end
Run Code Online (Sandbox Code Playgroud)

然后按照Tony Amoyal http://www.tonyamoyal.com/2010/07/28/rails-authentication-with-devise-andcancan-customizing-devise-controllers/显示的例子,我应该改变我的路线更新新控制器的访问权限:

devise_for :users, :controllers => { :registrations => "users/registrations" } do
#get '/author/sign_up', :to => 'devise/registrations#new'
#get '/client/sign_up', :to => 'devise/registrations#new'  
get '/author/sign_up', :to => 'users/registrations#new'
get '/client/sign_up', :to => 'users/registrations#new'      
end
Run Code Online (Sandbox Code Playgroud)

是的,我在这里有点奇怪,因为我正在捕捉一些特定的路径将它们发送到注册页面,这使我能够有效地创建2个注册场景.在我覆盖注册控制器之前,我评论了我的内容.

即使所有这些和我的authors_waiting_path是一个有效的路径,它只是在注册后继续进入登录页面:(

这真令人沮丧.

亚历克斯

编辑:我也在设计维基上找到了这个:https://github.com/plataformatec/devise/wiki/How-To : -Redirect- after-registration-(sign- up)

但我不知道在哪里定义这个创建方法?我应该覆盖会话控制器???

编辑2:

我把控制器的虚拟覆盖:

  class Pouets::RegistrationsController < Devise::RegistrationsController

    def after_sign_up_path_for(resource)
      authors_waiting_path
    end 

    def new
      super
    end

    def create
      puts "was here"
      super
    end …
Run Code Online (Sandbox Code Playgroud)

overriding ruby-on-rails registration devise

10
推荐指数
1
解决办法
2万
查看次数

了解赛璐珞并发

以下是我的赛璐珞代码.

  1. client1.rb2个客户之一.(我把它命名为客户1)

  2. client2.rb2个客户中的第2个.(命名为客户2)

注意:

上述2个客户端之间唯一的区别是传递给服务器的文本.即('client-1''client-2'分别)

在测试这2个客户端(通过并排运行)对后续2个服务器(一次一个).我发现很奇怪的结果.

  1. server1.rb(从赛璐珞-zmq的README.md获取的基本示例)

    使用此作为上述2个客户端的示例服务器导致并行执行任务.

OUTPUT

ruby server1.rb

Received at 04:59:39 PM and message is client-1
Going to sleep now
Received at 04:59:52 PM and message is client-2
Run Code Online (Sandbox Code Playgroud)

注意:

所述client2.rb当被处理的消息client1.rb请求是对睡眠(并行标记)

  1. server2.rb

    使用此作为上述2个客户端的示例服务器并未导致并行执行任务.

OUTPUT

ruby server2.rb

Received at 04:55:52 PM and message is client-1
Going to sleep now
Received at 04:56:52 PM and message …
Run Code Online (Sandbox Code Playgroud)

ruby multithreading zeromq celluloid

10
推荐指数
1
解决办法
402
查看次数

如何处理ZeroMQ + Ruby中的线程问题?

阅读关于线程安全的ZeroMQ常见问题时偶然发现.

我的多线程程序在ZeroMQ库中的奇怪位置不断崩溃.我究竟做错了什么?

ZeroMQ套接字不是线程安全的."指南"中对此进行了详细介绍.

简短的版本是不应该在线程之间共享套接字.我们建议为每个线程创建一个专用套接字.

对于每个线程的专用套接字不可行的情况,当且仅当每个线程在访问套接字之前执行完整的内存屏障时,才可以共享套接字.大多数语言都支持Mutex或Spinlock,它将代表您执行完整的内存屏障.

我的多线程程序在ZeroMQ库中的奇怪位置不断崩溃.
我究竟做错了什么?

以下是我的以下代码:

Celluloid::ZMQ.init
module Scp
    module DataStore
    class DataSocket
        include Celluloid::ZMQ 
            def pull_socket(socket)
                @read_socket = Socket::Pull.new.tap do |read_socket|
                    ## IPC socket
                    read_socket.connect(socket)
                end
            end

            def push_socket(socket)
                @write_socket = Socket::Push.new.tap do |write_socket|
                    ## IPC socket
                    write_socket.connect(socket)
                end
            end

            def run
                pull_socket and push_socket and loopify!
            end

            def loopify!
                loop {
                   async.evaluate_response(read_socket.read_multipart)
                }
            end

            def evaluate_response(data)
                return_response(message_id,routing,Parser.parser(data))
            end

            def return_response(message_id,routing,object)
                data = object.to_response
                write_socket.send([message_id,routing,data])
            end
        end
    end
end  

DataSocket.new.run 
Run Code Online (Sandbox Code Playgroud)

现在,有几件我不清楚的事情:

1) 假设 …

ruby sockets multithreading zeromq celluloid

8
推荐指数
1
解决办法
524
查看次数

在Rails自定义验证中使用范围

我想在自定义验证中应用范围限制器

我有这个产品模型,它有make,model,serial_number,vin作为属性

现在我有一个自定义验证来检查vin如果vin不存在,以检查数据库中make + model + serial_number唯一性的组合

validate:combination_vin,:if =>"vin.nil?"

def combination_vin 
  if Product.exists?(:make => make,:model => model,:serial_number => serial_number)
      errors.add(:base,"The Combination of 'make+model+serial_number' already present")
  end
end
Run Code Online (Sandbox Code Playgroud)

我想在此验证器中针对user_id引入一个范围

现在我知道我可以轻松地写这个以实现相同的使用

 def combination_vin
    if Product.exists?(:make => make,:model => model,:serial_number => serial_number,:user_id => user_id)
      errors.add(:base,"The Combination of 'make+model+serial_number' already present")
    end
 end
Run Code Online (Sandbox Code Playgroud)

但出于好奇,我想在自定义验证上有一个范围验证器(类似{:scope =>:user_id}),这样我就不必在存在中传递额外的user_id吗?哈希

谢谢

validation ruby-on-rails ruby-on-rails-3 rails-3.1 ruby-on-rails-3.2

6
推荐指数
1
解决办法
1574
查看次数