我试图计算一年和一个月内创建的所有用户的数量,但以下似乎没有按预期工作.
User.group("YEAR(created_AT), MONTH(created_at)").
count("DISTINCT(id), YEAR(created_at), MONTH(created_at)")
Run Code Online (Sandbox Code Playgroud)
我正在寻找类似的东西
{2011 => {1 => 222, 2 => 333, 4 => 444, 5 => 667 ... }}
Run Code Online (Sandbox Code Playgroud)
但我得到了
{1 => 222, 2 => 333, 4 => 444, 5 => 667 ... }
Run Code Online (Sandbox Code Playgroud)
我错过了什么,或者ActiveRecord不能在一个查询中给我这个结果?
我想在我的Rails应用程序中的Capybara测试套件中使用rspec模拟来存根登录用户(使用Devise/Warden).这将节省大量时间,并且意味着我的测试套件可以/将定期运行.
以前我可以使用authlogic通过使用如下代码来截断我的会话模型来做到这一点:
def login(user)
user_session = mock_model(UserSession, {:user => user})
UserSession.stub(:find).and_return(user_session)
end
Run Code Online (Sandbox Code Playgroud)
现在我正在使用Devise,我再也无法访问UserSession对象了.因为我使用capybara来测试我的代码,所以我没有直接访问请求对象来使用devise的内置sign_in测试助手.
我的问题是:我如何使用水豚,设计和规范模拟模拟登录用户,而不需要每个具有登录用户的方案首先进入注册路径,填写表单,提交,等待响应,以及然后转到所需的页面?
我正在尝试了解Google Chrome工具生成的heapdump的内容.我知道已有一个浏览器内堆转储检查器,但我有兴趣编写一个解析JS堆转储作为练习的CLI.我无法找到有关堆转储内容结构的任何文档.它们是人类可读的,但检查文件的格式不是很清楚
这是一个随机片段:
"HTMLOptionElement",
"XMLHttpRequestEventTarget",
"about:blank",
"clearModifier",
"resetModifiers",
"/devtools/docs/demos/memory/example1",
"HTMLIFrameElement",
"https://www.google.com/jsapi?autoload=%7B%22modules%22%3A%5B%7B%22name%22%3A%22search%22%2C%22version%22%3A%221.0%22%2C%22callback%22%3A%22__gcse.scb%22%2C%22style%22%3A%22https%3A%2F%2Fwww.google.com%2Fcse%2Fstyle%2Flook%2Fv2%2Fdefault.css%22%2C%22language%22%3A%22en%22%7D%5D%7D",
"HTMLLinkElement",
"HTMLContentElement",
"window.__SSR = {c: 1.2808007E7 ,si:1,su:1,e:'richard@example.com',dn:'Richard Schneeman',a:'bubble',at:'AZW7SXV+1uUcQX+2WIzyelLB5UgBepsr1\\/RV+URJxwIT6BmLmrrThMH0ckzB7mLeFn1SFRtxm\\/1SD16uNnjb0qZxXct8\\x3d',ld:[,[0,12808007,[]\n,1,70]\n]\n,r:'https:\\/\\/developer.chrome.com\\/devtools\\/docs\\/demos\\/memory\\/example1',s:'widget',annd: 2.0 ,bp: {}, id:'http:\\/\\/www.google.com\\/chrome'}; document.addEventListener && document.addEventListener('DOMContentLoaded', function () {gapi.inline.tick('wdc', new Date().getTime());}, false);",
"onLoaded",
"HTMLAllCollection",
"onDocumentKeyDown",
Run Code Online (Sandbox Code Playgroud)
是否存在关于chrome堆转储结构的文档?是否有标准的javascript堆转储格式或每个引擎都有自己的专有标准?
我正在尝试使用Ruby的特殊方法$&(返回上一个正则表达式匹配)的别名.我可以手动完成这个工作:
original = String.instance_method(:sub)
String.send(:define_method, :sub) do |*args, &block|
puts "called"
original.bind(self).call(*args, &block)
end
"foo".sub(/f/) { $&.upcase }
called
# => "Foo"
Run Code Online (Sandbox Code Playgroud)
但是,如果我尝试编写一个为我执行此操作的方法,它将失败:
def programatic_alias(klass, method_name)
original = klass.instance_method(method_name)
klass.send(:define_method, method_name) do |*args, &block|
puts "called"
original.bind(self).call(*args, &block)
end
end
programatic_alias(String, :sub)
"foo".sub(/f/) { $&.upcase }
called
NoMethodError: undefined method `upcase' for nil:NilClass
called
called
called
from (irb):19:in `block in irb_binding'
Run Code Online (Sandbox Code Playgroud)
看起来全球状态受到programatic_alias方法范围的影响,但我不确定这是不是正在发生的事情.问题是:我如何以编程方式使用别名,String#sub以便它仍然适用于Ruby的特殊全局变量?
我需要使用javascript将yyyy-mm-dd中的日期(如2011-12-30)转换为UTC.怎么样?
使用Travis CI,我可以允许像Ruby 1.8.7这样的语言失败:
matrix:
allow_failures:
- rvm: 1.8.7
Run Code Online (Sandbox Code Playgroud)
我可以允许某些环境变量失败
matrix:
allow_failures:
- env: "RAILS_VERSION=master"
Run Code Online (Sandbox Code Playgroud)
我想要做的是允许环境变量和Ruby版本的交集失败.喜欢
matrix:
allow_failures:
- env: "RAILS_VERSION=master" && rvm: 1.8.7
Run Code Online (Sandbox Code Playgroud)
有可能用travis做到这一点吗?
如果我想转到我可以使用的页面上的"whatever_id",我如何使用link_to来正常转到页面上的特定(html)ID
<a href="http://www.example.com/index/mypage#whatever_id>Click Here</a>
Run Code Online (Sandbox Code Playgroud)
但我想使用我的link_to
<%= link_to "click here" , {:action => "mypage", :controller => "index" }, :id => "#whatever_id"%>
Run Code Online (Sandbox Code Playgroud)
辅助方法.有谁知道如何做到这一点?可能吗?
Rails 2.3.4
似乎当我创建一个对象时,时间不正确.您可以通过下面的脚本/控制台输出看到.有没有人遇到这样的事情,或有任何调试技巧?
>> Ticket.create(...)
=> #<Ticket id: 7, from_email: "foo@example.com", ticket_collaterals: nil, to_email: "foo2@example.com", body: "hello", subject: "testing", status: nil, whymail_id: nil, created_at: "2009-12-31 04:23:20", updated_at: "2009-12-31 04:23:20", forms_id: nil, body_hash: nil>
>> Ticket.last.created_at.to_s(:long)
=> "December 31, 2009 04:23"
>> Time.now.to_s(:long)
=> "December 30, 2009 22:24"
Run Code Online (Sandbox Code Playgroud) 刚刚将应用程序从rails 3.0.9升级到3.2.1,当我运行时bundle exec rake assets:precompile我得到错误,这很好但是回溯并没有告诉我在我的css或scss文件中语法问题来自哪里.我尝试greping"0ee5c0e69c92af0",但该字符串没有出现在我的项目中.
bundle exec rake assets:precompile:all RAILS_ENV=production RAILS_GROUPS=assets --trace
** Invoke assets:precompile:all (first_time)
** Execute assets:precompile:all
** Invoke assets:precompile:primary (first_time)
** Invoke assets:environment (first_time)
** Execute assets:environment
** Invoke tmp:cache:clear (first_time)
** Execute tmp:cache:clear
** Execute assets:precompile:primary
rake aborted!
Invalid CSS after "...0ee5c0e69c92af0": expected ";", was ".png;"
Run Code Online (Sandbox Code Playgroud)
有没有办法从预编译过程中获得更好的错误消息或堆栈跟踪?有没有其他方法可以编译我的css.erb文件来检查语法没有这个任务?
我有一个在服务器上运行的代码,在服务器硬关闭之前,SIGTERM发送一个信号让我的代码知道它需要清理.我想在发生这种情况时运行代码并将信号发送回同一个程序,因此任何其他需要清理的代码都可以这样做.我不想捕获信号或改变信号行为,我只需要在程序的其余部分解释SIGTERM之前运行一些东西.
目前我可以做类似的事情
Signal.trap('TERM') do
puts "Graceful shutdown"
exit
end
Run Code Online (Sandbox Code Playgroud)
但是如果同一个应用程序中的多个代码试图做同样的事情,它就不起作用.例如:
Signal.trap('TERM') do
puts "Graceful shutdown"
exit
end
Signal.trap('TERM') do
puts "Another graceful shutdown"
exit
end
Run Code Online (Sandbox Code Playgroud)
您将只看到"Another graceful shutdown"并且第一个代码块将无法运行.
理想情况下,我可以通过以下方式调用当前行为:
Signal.trap('TERM') do
puts "another graceful shutdown"
super
end
Run Code Online (Sandbox Code Playgroud)
但这并不是出于显而易见的原因.所以问题是:当我得到一个SIGTERM没有捕获它并防止其他代码做同样的事情时,我如何运行代码?