小编Sim*_*tti的帖子

我如何按天而不是按日期分组?

好的,我有

 >> list = Request.find_all_by_artist("someBand")
=> [#<Request id: 1, artist: "someBand", song: "someSong", venue: "Knebworth - Stevenage, United Kingdom", showdate: "2011-07-01", amount: nil, user_id: 2, created_at: "2011-01-01 18:14:08", updated_at: "2011-01-01 18:14:09".............
Run Code Online (Sandbox Code Playgroud)

然后

list.group_by(&:created_at).map {|k,v| [k, v.length]}.sort
=> [[Sat, 01 Jan 2011 18:14:08 UTC +00:00, 10], [Sun, 09 Jan 2011 18:34:19 UTC +00:00, 1], [Sun, 09 Jan 2011 18:38:48 UTC +00:00, 1], [Sun, 09 Jan 2011 18:51:10 UTC +00:00, 1], [Sun, 09 Jan 2011 18:52:30 UTC +00:00, 1], [Thu, 10 Feb …
Run Code Online (Sandbox Code Playgroud)

ruby group-by ruby-on-rails ruby-on-rails-3

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

黄瓜故事的会话变量

我正在为一个"注册"应用程序编写一些Cucumber故事,该应用程序有许多步骤.

而不是写一个Huuuuuuuge故事来同时覆盖所有步骤,这将是坏事,我宁愿像常规用户一样在控制器中完成每个动作.我的问题在于我将在第一步中创建的帐户ID存储为会话变量,因此当访问步骤2,步骤3等时,将加载现有的注册数据.

我知道能够controller.session[..]在RSpec规范中访问但是当我尝试在Cucumber故事中执行此操作时它失败并出现以下错误(并且,我也读过某处这是一个反模式等...):

使用controller.session [:whatever]或session [:whatever]

You have a nil object when you didn't expect it!
The error occurred while evaluating nil.session (NoMethodError)
Run Code Online (Sandbox Code Playgroud)

使用会话(:无论如何)

wrong number of arguments (1 for 0) (ArgumentError)
Run Code Online (Sandbox Code Playgroud)

因此,似乎加入会话存储是不可能的.我想知道的是,是否可能(我想哪个会是最好的......):

  1. 模拟会话商店等
  2. 在控制器和存根中有一个方法(例如get_registration,它分配一个实例变量......)

我查看了RSpec书(好吧,浏览过)并浏览了WebRat等,但我还没有真正找到问题的答案......

为了澄清一点,注册过程更像是一个状态机 - 例如用户在注册完成之前通过四个步骤前进 - 因此"登录"实际上不是一个选项(它打破了网站工作原理的模型) )...

在我对控制器的规范中,我能够根据会话var加载对方法的调用 - 但是我不确定'antipattern'行是否也适用于存根和模拟?

谢谢!

testing rspec ruby-on-rails webrat cucumber

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

制作像'Hello World'这样的字符串的Ruby方法就像'hello_world'

什么是Hello World使用类似字符串的Ruby方法hello_world.

ruby

16
推荐指数
2
解决办法
8531
查看次数

适用于多种环境的Sidekiq配置

我已经查看了多个来源并尝试了各种方案,但无法解决这个问题.请指出我正确的方向.

像每个人一样,我有3个环境(开发,分期和生产).

我在sidekiq.yml文件中有以下内容

# Options here can still be overridden by cmd line args.
#   sidekiq -C config.yml  
---
:verbose: false
:namespace: xyz
:logfile: log/sidekiq.log
:concurrency:  25
:strict: false
:pidfile: tmp/pids/sidekiq.pid
:queues:
  - [stg_xyz_tests_queue, 10]
  - [stg_default_xyz_queue, 2]
  - [stg_xyz_default_queue, 3]
development:
  :verbose: true
  :concurrency:  15
  :queues:
    - [dev_xyz_queue, 10]
    - [dev_default_xyz_queue, 2]
    - [dev_xyz_default_queue, 3]
staging:
  :queues:
    - [stg_xyz_queue, 10]
    - [stg_default_xyz_queue, 2]
    - [stg_xyz_default_queue, 3]
production:
  :queues:
    - [prod_xyz_queue, 10]
    - [prod_default_xyz_queue, 2]
    - [prod_xyz_default_queue, 3]
Run Code Online (Sandbox Code Playgroud)

有了这个,我希望当我用命令启动sidekiq时

RAILS_ENV=#{rails_env} …
Run Code Online (Sandbox Code Playgroud)

ruby ruby-on-rails sidekiq

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

PostgreSQL独特的索引和字符串大小写

如果我在字段上创建PostgreSQL唯一索引,默认情况下比较不区分大小写?

如果没有,是否可以要求PostgreSQL忽略字符串大小写?

database postgresql indexing

15
推荐指数
1
解决办法
5311
查看次数

获取公共(远程)IP地址

我想知道是否有一种简单的方法来使用Ruby获取计算机的公共IP地址.

ruby

15
推荐指数
2
解决办法
6935
查看次数

ActionMailer电子邮件在development.log中"发送",但未收到

我有问题,实际上通过在的ActionMailer发展发送,在我的本地,用Rails的2.3.2红宝石1.8.6.development.log显示它已"发送"了没有错误的电子邮件,但未收到电子邮件.我已尝试多个电子邮件地址进行发送和接收,并尝试了多个配置和插件,但无法收到要发送的电子邮件.任何帮助都将非常感激 - 我觉得我正在为不同版本的导轨和红宝石的一系列解决方案跳舞,并且无法将其钉死.我非常感谢任何评论.谢谢!

插件:

  • 动作邮件可选tls
  • smtp_tls

不同的电子邮件配置:

  ActionMailer::Base.smtp_settings = {
    :enable_starttls_auto => true, #works in ruby 1.8.7 and above
    :address => 'smtp.gmail.com',
    :port => 587,
    :domain => 'example.com',
    :authentication => :plain,
    :user_name => 'testacct',
    :password => 'secret'
  }
Run Code Online (Sandbox Code Playgroud)
  config.action_mailer.delivery_method = :smtp
  config.action_mailer.smtp_settings = {
    :tls => :true,
    :address => 'smtp.gmail.com',
    :port => 587,
    :authentication => :plain,
    :user_name => 'testacct@gmail.com',
    :password => 'secret'
    #:enable_starttls_auto => true # for rails >= 2.2 && ruby >= 1.8.7 …
Run Code Online (Sandbox Code Playgroud)

ruby ruby-on-rails actionmailer

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

在Rails上获取模型或404

是否可以在rails上使用get_by_id_or_404函数.例如,在我的控制器中我使用:

@destination = Destination.find_by_id(params[:id])
Run Code Online (Sandbox Code Playgroud)

如果没有设置id或找不到目的地,我怎么能要求Rails重定向到404页面?

谢谢!

ruby ruby-on-rails

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

如何与工厂女孩一起创建独特的字符串(没有数字)?

或者是生成随机和唯一用户名所必需的外部gem?

这是我目前的工厂:

factory :user_4 do
    sequence(:id) { |n| n }
    sequence(:first_name) { |n| "Gemini" + n.to_s }
    sequence(:last_name) { |n| "Pollux" + n.to_s }
    sequence(:profile_name) { |n| "GeminiPollux" + n.to_s  }
    sequence(:email) { |n| "geminipollus" + n.to_s + "@hotmail.co.uk" }
end
Run Code Online (Sandbox Code Playgroud)

使用序列方法适用于id,profile_name和email,但我的REGEX验证意味着名字和姓氏自动无效,因为它们中有一个数字.与独特性无关.

那么我该如何创建这些独特的名字呢?

ruby ruby-on-rails factory-bot

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

curl不支持mac上的http2

我有最新版本的curl,仍然没有看到http2显示为一个功能.我已经按照相关问题的步骤,但仍然运气不好.

$ /usr/local/Cellar/curl/7.43.0/bin/curl -V
curl 7.43.0 (x86_64-apple-darwin14.3.0) libcurl/7.43.0 SecureTransport zlib/1.2.5
Protocols: dict file ftp ftps gopher http https imap imaps ldap ldaps pop3 pop3s rtsp smb smbs smtp smtps telnet tftp 
Features: IPv6 Largefile NTLM NTLM_WB SSL libz UnixSockets
Run Code Online (Sandbox Code Playgroud)

有任何想法吗?

homebrew curl http2

14
推荐指数
3
解决办法
4324
查看次数