小编Bvu*_*Ic7的帖子

RSpec发送电子邮件(不存储在ActionMailer :: Base.deliveries中) - 不知道为什么?

我使用rspec,当我运行rake规范时,用户邮件程序通过smtp发送电子邮件,而不是将电子邮件存储在ActionMailer :: Base.deliveries-array中(由用户观察者调用)...

你能给我一个提示吗?

# Rails version
rails -v
=> Rails 3.0.1

# Ruby version with rvm (rvm version 1.0.16)
ruby -v
=> ruby 1.9.2p7 (2010-09-29 revision 29373) [x86_64-darwin10.4.0]

# Gemfile
gem "rspec-rails", ">= 2.0.1"
Run Code Online (Sandbox Code Playgroud)

配置-文件:

# config/environments/test.rb
MyApp::Application.configure do
  config.action_mailer.delivery_method = :test
  config.action_mailer.raise_delivery_errors = true
end

# spec/spec_helper.rb
...
ENV["RAILS_ENV"] ||= 'test'
...

# app/models/user_observer.rb
class UserObserver < ActiveRecord::Observer
  observe User

  def after_create(record)
    puts Rails.env
    # => "test"
    UserMailer.new_user_notification(record).deliver
    puts ActionMailer::Base.deliveries.inspect
    # => []
    # Sends it via smtp! …
Run Code Online (Sandbox Code Playgroud)

email rspec ruby-on-rails observer-pattern ruby-on-rails-3

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

在RSpec中的所有MiniTest测试中包含模块

在RSpec中我可以创建辅助模块 /spec/support/...

module MyHelpers
  def help1
    puts "hi"
  end
end
Run Code Online (Sandbox Code Playgroud)

并将其包含在每个规范中:

RSpec.configure do |config|
  config.include(MyHelpers)
end
Run Code Online (Sandbox Code Playgroud)

并在我的测试中使用它,如下所示:

describe User do
  it "does something" do
    help1
  end
end
Run Code Online (Sandbox Code Playgroud)

如何在所有MiniTest测试中包含一个模块,而不必在每次测试中重复自己?

ruby rspec ruby-on-rails minitest ruby-on-rails-3

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

Factory_girl has_one与validates_presence_of的关系

我有2个型号:

# user.rb
class User < ActiveRecord::Base
  has_one :profile, :dependent => :destroy
end

# profile.rb
class Profile < ActiveRecord::Base
  belongs_to :user
  validates_presence_of :user
end

# user_factory.rb
Factory.define :user do |u|
  u.login "test"
  u.association :profile
end
Run Code Online (Sandbox Code Playgroud)

我想做这个:

@user = Factory(:user)
=> #<User id: 88,....>
@user.profile
=> #<Profile id:123, user_id:88, ......>

@user = Factory.build(:user)
=> #<User id: nil,....>
@user.profile
=> #<Profile id:nil, user_id:nil, ......>
Run Code Online (Sandbox Code Playgroud)

但这不起作用!它告诉我,我的个人资料模型不正确,因为没有用户!(它在用户之前保存配置文件,因此没有user_id ...)

我怎样才能解决这个问题?尝试了一切.. :(我需要调用Factory.create(:user)...

UPDATE

修复了这个问题 - 现在正在使用:

# user_factory.rb
Factory.define :user do |u|
  u.profile { Factory.build(:profile)}
end …
Run Code Online (Sandbox Code Playgroud)

testing ruby-on-rails ruby-on-rails-plugins ruby-on-rails-3 factory-bot

9
推荐指数
1
解决办法
4164
查看次数

发布Rails 3

有人知道Rails 3什么时候发布?试图在网上找到信息 - 但我发现没什么用处......

ruby release ruby-on-rails

8
推荐指数
2
解决办法
9224
查看次数

如果以防查询,Postgres嵌套

你能告诉我为什么以下不能在postgres sql中工作吗?:

See updated code below
Run Code Online (Sandbox Code Playgroud)

更新:

我希望查询返回"0.30"作为浮点数.这个构造仅用于测试目的,我有一些复杂的查询依赖于这个条件结构... BUt我不知道如何解决它..

结果是:

ERROR:  syntax error at or near "1"
LINE 4:     if 1=1 then
Run Code Online (Sandbox Code Playgroud)

更新:

这个结构出现在一个函数中......所以我想做以下事情:

CREATE FUNCTION f_test(myvalue integer) RETURNS float AS $$
  BEGIN
    select (
      case (select '1')
      when '1' then
        if 1=1 then
          0.30::float
        else
          0.50::float
        end
      else
         1.00::float
      end
    );
  END;
$$ LANGUAGE plpgsql;

select f_test(1) as test;
Run Code Online (Sandbox Code Playgroud)

错误信息见上文.

sql postgresql if-statement case

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

将Haml字符串转换为html

你能告诉我如何将haml字符串解析为rails中的html吗?

ruby haml rubygems

7
推荐指数
1
解决办法
3991
查看次数

MiniTest - 仅重新运行失败的测试

是否可以通过rake任务让minitest只运行失败的测试?

无法在互联网上找到任何关于这个...用rspec或黄瓜它工作..这里有可能吗?

ruby testing minitest ruby-on-rails-3

7
推荐指数
1
解决办法
1126
查看次数

记录rails控制台始终在生产环境中归档

正如您自己所知,有时您必须通过rails控制台在现场制作机器上执行任务...

我通常从以下开始: bundle exec rails console -e production

但是由于它是生产机器,我想将rails控制台的所有+输出记录到文件中 /home/sshuser/myproject/console_sessions/2016_09_09__14_33_33.txt

谁知道怎么做?我想以自动方式启动记录器,但只有在我运行控制台的情况下?

(我正在运行Rails 3.2)谢谢!

ruby ruby-on-rails ruby-on-rails-3

7
推荐指数
1
解决办法
926
查看次数

解码 base45 字符串

我们正在尝试实施新的欧盟冠状病毒测试/疫苗接种证书的验证,但无法使 base45 解码工作。

规范在这里:https : //datatracker.ietf.org/doc/draft-faltstrom-base45/

我们几乎完成了我们的课程,但有时我们会得到错误的值。

目标是这样的:

Encoding example 1: The string "AB" is the byte sequence [65 66].
The 16 bit value is 65 * 256 + 66 = 16706. 16706 equals 11 + 45 * 11
+ 45 * 45 * 8 so the sequence in base 45 is [11 11 8].  By looking up
these values in the Table 1 we get the encoded string "BB8".

Encoding example 2: The string "Hello!!" as ASCII is …
Run Code Online (Sandbox Code Playgroud)

ruby ruby-on-rails

7
推荐指数
1
解决办法
7654
查看次数

Restful_authentication与Authlogic

您有什么推荐的吗?

Authlogic还是restful_authentication?

将电子邮件激活步骤构建为authlogic是困难的(据我所知,Authlogic没有包含此功能).

ruby ruby-on-rails

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