草庐IT

non-zero

全部标签

ruby-on-rails - ruby rails : Unit Testing non activerecord models and still load fixtures

我可能遗漏了一些东西,但我陷入了这种情况:我有一个非activerecord模型,我想对其进行测试。我从Test::Unit::TestCase派生了它的测试用例类。但是,模型的测试用例类在其自身内部使用了其他activerecord模型类,我想为它们加载固定装置。我的问题是fixtures类方法仅在我从ActiveSupport::TestCase继承测试用例类时才可用(它在ActiveRecord::TestFixtures包含在ActiveSupport::TestCase中)。任何帮助,因为运行测试都会给我错误:未定义的方法“fixtures”(这是可以理解的),如果我从Act

ruby - 错误 "non-absolute home"通过网络 :SSH

有问题的代码Net::SSH.start('servername','user')这将返回“非绝对主页”。“用户”实际上有一个主目录。一种建议的方法是使用IdentityFile的完整路径修改~/.ssh/config。这并没有解决问题。其中最疯狂的部分是,如果通过irb或控制台调用,代码可以正常工作。当我们尝试从类方法(使用相同的代码)中调用它时,它会返回“非绝对主页”错误。“用户”也可以通过命令行ssh进入服务器而不会出现问题。服务器正在运行Ubuntu。更新感谢@Phrogz-解决方法是将ENV['HOME']设置为'/home/deploy'。但是,我还没有弄清楚为什么$HOM

ruby-on-rails - Rails 和 attr_accessible : is there a way to raise an exception if a non-mass-assignable attribute is mass-assigned?

如果尝试批量分配attr_accessible不允许的属性,是否有办法让Rails引发错误?这在开发中会很方便,可以提醒我为什么我Shiny的新模型不起作用,也有助于登录生产环境以检测恶意事件。我正在使用Rails2.3.8,但可能很快就会迁移到3。 最佳答案 从Rails3.2开始,这不再需要monkeypatching——rails现在提供了这种行为。将其放入development.rb和test.rb:config.active_record.mass_assignment_sanitizer=:strict

ruby-on-rails - 弃用警告 : Dangerous query method (method whose arguments are used as raw SQL) called with non-attribute argument(s)

我将我的Rails5.1.4应用更新到了5.2.0。我的一个模型中有以下范围:scope:by_category,lambda{|category_slug|category_ids=Category.find_by(slug:category_slug)&.subtree_idswhere(category_id:category_ids)}由于该范围,Rails返回以下错误:DEPRECATIONWARNING:Dangerousquerymethod(methodwhoseargumentsareusedasrawSQL)calledwithnon-attributeargume

ruby - 表示 "at least one non-digit"的正则表达式

我想根据这个模式验证用户名:允许的字符:字母、数字、连字符、下划线第一个字符必须是字母或数字用户名不能全是数字这个正则表达式满足上面的1和2,但是我想不通如何满足3:/^[a-zA-Z\d][\w\-]+$/(我正在使用Ruby,如果相关的话) 最佳答案 不是很高效,但是很简单:/^(?!\d+$)[a-zA-Z\d][\w\-]+$/前瞻只是意味着:“后面不是一串数字,一直持续到最后”。 关于ruby-表示"atleastonenon-digit"的正则表达式,我们在StackOver

ruby-on-rails - 重定向到某个页面而不是 :notice when non-confirmed user logs in

如何将登录到特定页面的未确认用户重定向到某个页面而不是显示:notice(“您必须确认您的帐户”)。使用Devisegem(最新)这个问题:(Devise-Redirectedtopageifaccountisn'tconfirmed)提供了这个解决方案:#config/initializers/my_strategy.rbWarden::Strategies.add(:my_strategy)dodefvalid?trueenddefauthenticate!u=User.find_for_authentication(:email=>params[:email])ifu.nil?|

ruby-on-rails - rails : money gem converts all amounts to zero

我正在尝试使用moneygem在我的应用程序中处理货币,但我遇到了一个奇怪的错误。这是我的“记录”模型中的内容:composed_of:amount,:class_name=>"Money",:mapping=>[%w(centscents),%w(currencycurrency_as_string)],:constructor=>Proc.new{|cents,currency|Money.new(cents||0,currency||Money.default_currency)},:converter=>Proc.new{|value|value.respond_to?(:to

ruby - 为什么我不能在 ruby​​ 中做 "if zero"?

>>current_user.first_visit=>0>>ifcurrent_user.first_visit>>puts"test">>endtest=>nil为什么打印测试? 最佳答案 在Ruby中只有nil可以被认为是false的类比。没有假设0、""或[]表示false,因此您必须使用==0、.blank?、.empty?、.zero?等但是nil并不总是表现为false。例如,在字符串插值中,.to_s方法应用于#{}内容,它对FalseClass和NilClass的作用不同:irb(main)>"qwe#{false

Ruby strftime : Day without leading zero, %e 不工作

我正在尝试用没有前导零的日期来格式化日期使用%d它工作正常,但前导零date_time.strftime("%d/%m/%y")result:04/01/11我搜索了一下,发现我应该使用%e而不是%d,但是执行以下操作会得到一个空字符串。date_time.strftime("%e/%m/%y")result:这跟Ruby的版本有关系吗?我在Windows机器上使用v1.8.7。更重要的是,是否有另一种方法可以在没有前导零的情况下完成一天(比gsub更方便)? 最佳答案 如果你想删除月份或日期的前导零,只需在格式前添加一个减号,如下

Ruby 并发 : non-blocking I/O vs threads

我正在研究Ruby(1.9.3-p0)中的并发性,并创建了一个非常简单的I/O密集型代理任务。首先,我尝试了非阻塞方法:require'rack'require'rack/fiber_pool'require'em-http'require'em-synchrony'require'em-synchrony/em-http'proxy=lambda{|*|result=EM::Synchrony.syncEventMachine::HttpRequest.new('http://google.com').get[200,{},[result.response]]}useRack::Fi