小编inf*_*sed的帖子

使用RSpec 3测试sidekiq perform_in

RSpec 3和sidekiq 3.2.1.我已经正确设置了sidekiq和rspec-sidekiq.

假设我有一个叫做的工人WeatherJob,它会将天气状态sunny改为rainy:

class WeatherJob
  include Sidekiq::Worker

  def perform record_id
    weather = Weather.find record_id

    weather.update status: 'rainy'
  end
end
Run Code Online (Sandbox Code Playgroud)

我像这样使用这个工人:

WeatherJob.perform_in 15.minutes, weather.id.

在规范中,我使用Timecop模拟时间:

require 'rails_helper'

describe WeatherJob do
  let(:weather) { create :weather, status: 'sunny' }
  let(:now)     { Time.current }

  it 'enqueue a job' do
    expect {
      WeatherJob.perform_async weather.id
    }.to change(WeatherJob.jobs, :size).by 1
  end

  context '15 mins later' do
    before do
      Timecop.freeze(now) do
        Weather.perform_in 15.minutes, weather.id
      end
    end

    it 'update to rainy' …
Run Code Online (Sandbox Code Playgroud)

ruby rspec sidekiq rspec-sidekiq

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

SQL在查询结果中替换另一个表中的多个变量

我有一个团队日程表,看起来像这样:

DBO.SCHEDULE

Game1_Time  |  Game1_Home_Team   | Game1_Away_Team 
===================================================
12:00:00    |         1          |         2
Run Code Online (Sandbox Code Playgroud)

我想将团队值替换为另一个表中存在的相应团队:

DBO.TEAM

Team_Number  |  Team_Name
========================
    1        |  The Monsters
    2        |  Bug Bites
Run Code Online (Sandbox Code Playgroud)

尝试这样做:如何在查询结果中用"The Monsters"和"Bug Bites"替换附表中的1&2?

Game1_Time  |  Home Team         | Away Team 
===================================================
12:00:00    |  The Monsters      |  Bug Bites
Run Code Online (Sandbox Code Playgroud)

mysql sql

4
推荐指数
1
解决办法
3873
查看次数

RubyonRails-您必须在应用程序的配置中设置config.secret_key_base

我正在尝试访问我的localhost,并且在浏览器中出现以下错误:

You must set config.secret_key_base in your app's config
Run Code Online (Sandbox Code Playgroud)

我环顾四周,人们说你必须掏出密钥然后把它放进去,config/initializers/secret_token.rb但我的secret_token.rb文件夹中没有文件.我正在运行ruby版本ruby 2.1.2p9和rails版本Rails 4.0.8我正在按照教程,railstutorial.org如果这有助于2.2

ruby ruby-on-rails secret-key railstutorial.org ruby-on-rails-4

4
推荐指数
1
解决办法
5484
查看次数

我可以将命名范围附加到Rails中的链接吗?

我有一个事件模型,它有两个命名范围:

class Event < ActiveRecord::Base
  scope :future, lambda { where('events.date >= ?', Time.zone.now) }
  scope :past, lambda { where('events.date <= ?', Time.zone.now) }
end
Run Code Online (Sandbox Code Playgroud)

我通过创建两个新的控制器动作(名为"future"和"past")从我的控制器调用这些范围:

我的控制器:

class EventsController < InheritedResources::Base
  actions :index, :show, :future, :past

  has_scope :future
  has_scope :past

  def future
    index! { @events = Event.future }
  end

  def past
    index! { @events = Event.past }
  end
end
Run Code Online (Sandbox Code Playgroud)

我还有这些额外行动的观点和路线.

这很好用.我的应用程序执行我想要的操作,并且可以链接到我的侧边栏中的新操作,如下所示:

%li
  = link_to 'Events Home', events_path
%li
  = link_to 'Future Events', future_events_path
%li
  = link_to 'Past Events' past_events_path
Run Code Online (Sandbox Code Playgroud)

现在我对这个设置的问题是,虽然它工作得很好,但我不喜欢我必须为这些额外范围创建新的动作,视图和路由这一事实.我不认为我这样做是正确的.基本上我正在尝试过滤索引页面上的结果,但我必须创建新的操作,路由和视图来执行此操作.这看起来有点麻烦,我想知道是否有另一种方式.

如果我可以取消"未来"和"过去"控制器操作并且只是从视图中调用范围,那将是很好的: …

ruby-on-rails ruby-on-rails-3 has-scope

3
推荐指数
1
解决办法
3224
查看次数

减:除以变量?

是否可以在Less中划分两个变量?
喜欢@varA = @varB / @varC;吗?

我已经尝试过转义,但是输出不是我所需要的。

css less

3
推荐指数
1
解决办法
3224
查看次数

会话和轨道:会话未定义的变量/方法?

所以,我有这个错误:

undefined local variable or method session for ApplicationController:Class

所以我猜测的是rails,在设置之前没有"session"变量,对吧?或者我做错了什么.这是使用它的代码:

class ApplicationController < ActionController::Base
  # Pre vent CSRF attacks by raising an exception.
  # For APIs, you may want to use :null_session instead.
  protect_from_forgery with: :exception

  @account = User.find session[:userid]


end
Run Code Online (Sandbox Code Playgroud)

我在登录页面设置了它.是否只有一种方法可以执行它是不是零,还是不会因为它真的未定义而无效?我检查会议对吗?设置会话的代码:

class SessionsController < ApplicationController
  def login
  end
  def login_attempt
    authuser = User.auth(params[:name], params[:password])
    if authuser
      session[:userid] = authuser.id
        flash[:notice] = "We logged you in, #{authuser.name}!"
    else
        flash[:notice] = "INVALID USERNAME/PASSWORD!"
    end
  end
Run Code Online (Sandbox Code Playgroud)

结束

所以...任何想法这个错误信息甚至意味着什么.我看到有这样的问题,但根据我的测试,这是不一样的(或者是吗?)

ruby gem ruby-on-rails

3
推荐指数
1
解决办法
4046
查看次数

zsh:将AWS键添加为环境变量时解析“ \ n”附近的错误

我在Heroku上托管了一个Rails应用,并在Amazon S3上托管了图像。我试图使用以下方式将我的Amazon凭证添加到我的应用程序中:

heroku config:add aws_access_key:<your access key> aws_secret_key:<your secret key>
Run Code Online (Sandbox Code Playgroud)

我不断收到错误:

zsh: parse error near `\n'
Run Code Online (Sandbox Code Playgroud)

我不知道是什么问题。

zsh ruby-on-rails heroku amazon-s3 amazon-web-services

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

防止 Sidekiq 在测试中打印“(...) INFO: Sidekiq client with redis options {}”

我使用 Rails 4 默认测试框架并编写了一些测试,这些测试也希望 Sidekiq 在“后台”做一些工作。但是当我运行时,rake test我的测试结果如下所示:

.............2014-08-01T05:40:52Z 12000 TID-abcdef123 INFO: Sidekiq client with redis options {}
.....................................

Finished in 3.0s, 9.000 runs/s, 150.000 assertions/s.
30 runs, 400 assertions, 0 failures, 0 errors, 0 skips
Run Code Online (Sandbox Code Playgroud)

现在测试看起来不错,但是 Sidekiq 工人的日志真的很烦人。为了防止这个日志发生,我在我的工人班上试过这个:

class MyWorker
  include Sidekiq::Worker
  sidekiq_options queue: :my_queue

  def initialize
    Rails.logger.level = 2 # set to :warn level
    super
  end

  def perform(movie_id)
    # Rails.logger.level = 0 # set back to :debug level?

    # some code
  end
end
Run Code Online (Sandbox Code Playgroud)

Rails.logger.level注释和取消注释的行,但记录的行并没有消失。在运行时如何防止 Sidekiq …

testing logging ruby-on-rails sidekiq

3
推荐指数
1
解决办法
1411
查看次数

特定属性的 Ruby on Rails full_messages

在 Rails 中,我可以这样做以获取完整的错误消息(包括属性名称)

book.errors.full_messages.each do |err|
  puts err
end
Run Code Online (Sandbox Code Playgroud)

我的问题是,除了针对特定属性,我如何才能做同样的事情?

我不能这样做:

book.errors[:title].full_messages
Run Code Online (Sandbox Code Playgroud)

至于现在这就是我正在做的

book.errors[:title].each do |err|
  puts " Title #{err}"
end
Run Code Online (Sandbox Code Playgroud)

如果有更好的方法,我很期待

ruby-on-rails

3
推荐指数
1
解决办法
645
查看次数

在CREATE TABLE语句中缺少右括号

我得到了一个

ORA-00907错误,缺少右括号

当试图创建一个表w MySQL.

我在网上看了很多,但没有发现任何可以帮助我的东西..

这是我的CREATE TABLE语句:

CREATE TABLE station
(
nomStation varchar2(255),
capacite number(15) NOT NULL,
lieu varchar2(255) NOT NULL,
region ENUM('Quebec', 'Ontario', 'NewBrunswick', 'NovaScotia'),
tarif number(10) DEFAULT 0,
CONSTRAINT station_nomStation_pk PRIMARY KEY(nomStation)
);
Run Code Online (Sandbox Code Playgroud)

oracle ddl

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