小编tks*_*tks的帖子

带有delayed_job的noMethodError(collectiveidea gem)

更新:这个问题有一个补丁:https://github.com/collectiveidea/delayed_job/commit/023444424166ba2ce011bfe2d47954e79edf6798

更新2:对于在Heroku专门遇到此问题的任何人,我发现降级为Rake 0.8.7并使用延迟作业版本2.1.4工作,而延迟作业v3没有(虽然补丁它确实在本地工作) .这是在Bamboo-mri-1.9.2堆栈上.

我试图在本地的rails 3.1.0 app上实现delayed_job.我运行了迁移并安装了gem文件:

gem 'delayed_job'
gem 'delayed_job_active_record'
Run Code Online (Sandbox Code Playgroud)

关于collectiveidea github上的文档(https://github.com/collectiveidea/delayed_job).我正在从我的控制器拨打延迟电话,如下所示:

EventMailer.delay.event_message_email(current_user, @event_message)
Run Code Online (Sandbox Code Playgroud)

这会导致将任务添加到作业表中,但是当我运行rake作业时:工作它会记录以下错误:

Class#event_message_email failed with NoMethodError: undefined method `event_message_email' for Class:Class - 6 failed attempts
Run Code Online (Sandbox Code Playgroud)

我已经查看了SO上的其他delayed_job NoMethod错误问题,但没有解决此特定错误或提供解决方案.collectiveidea页面提到没有传递方法调用的这种格式是如何设置Rails 3邮件的黑客攻击,所以我想知道这个文档是否可能有些过时,如果有新的方法来调用邮件程序方法?

更新:也毫不拖延地调用邮件程序方法工作正常,我在默认的rails服务器上运行它,因此在collectiveidea faq中提到的Thin问题不适用.谢谢

ruby-on-rails delayed-job

11
推荐指数
2
解决办法
2978
查看次数

使用RVM使用sinatra app加载Active Record gem时出错

我为我正在启动的sinatra应用程序设置了一个项目级别的RVM gemset,它将使用Active Record连接到本地数据库.为了测试它,我尝试运行以下测试应用程序:

test.rb

require 'rubygems' # may not be needed, depending on platform
require 'sinatra'
require 'activerecord'

class Article < ActiveRecord::Base
end

get '/' do
  Test.establish_connection(
    :adapter => "sqlite3",
    :database => "hw.db"
  )
  Test.first.content
end
Run Code Online (Sandbox Code Playgroud)

(摘自这个问题的答案:使用Sinatra时与数据库交谈的最佳方式是什么?)

当我运行时,ruby -rubygems test.rb我收到此错误:

/Users/[user]/.rvm/rubies/ruby-1.9.3-p0/lib/ruby/site_ruby/1.9.1/rubygems/custom_require.rb:36:in `require': cannot load such file -- activerecord (LoadError)
Run Code Online (Sandbox Code Playgroud)

我已经安装了Active Record gem,它会显示出来gem listrvm current显示正确的gemset.我是RVM的新手,我认为这与它没有正确的加载路径有关,但我觉得我已经正确设置了所有内容,所以我很欣赏有关错误的建议.谢谢.

ruby activerecord rubygems sinatra rvm

10
推荐指数
1
解决办法
5750
查看次数

在raphael中设置文本元素的行高

我想增加用raphael生成的多行文本元素的行高.这似乎不起作用:

text_element.attr({"line-height": "16" });
Run Code Online (Sandbox Code Playgroud)

如何才能做到这一点?谢谢

svg raphael

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

如何在rails应用程序的大型ruby中管理css样式表文件和包含?

假设你没有使用框架,你应该如何管理在rails应用程序上的大型ruby中组织css文件和包含?当然,你有自己的应用程序级别样式(例如reset.css,applcation.css).但那之后什么是最好的方法?我可以看到使用特定于控制器的工作表或更具粒度的视图特定工 还有其他合理的选择吗?什么是利弊?

顺便说一句,我现在正处于3.1之前的轨道中,似乎包含资产管道可能会影响到这里的答案 - 但我很高兴听到来自资产前或管道后管道的解决方案.

谢谢!

css ruby-on-rails

5
推荐指数
1
解决办法
1272
查看次数

整数均匀度测试(% 2 vs &amp; 1)

这两个语句是否等效编译: n % 2 == 0 和 n & 1 == 0 ?

如果不是,是否有效率更高?

c

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

在表单提交验证错误后保留check_box_tag的状态

我在表单助手中使用check_box_tag,并且在提交验证错误后所有其他字段都保留其输入,但check_box_tag没有.有没有办法让check_box_tag在失败的表单提交中保存其状态?这是代码:

<%= check_box_tag 'user_ids[]', 
                  user.id,
                  false,
                  :class => 'user_checkbox' %>
Run Code Online (Sandbox Code Playgroud)

我需要在此上下文中使用check_box_tag而不是check_box.

ruby-on-rails

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

NoMethodError:在rails 3.1邮件程序上调用deliver时未定义的方法'index'

我已经在Heroku上设置了一个rails 3.1应用程序的暂存实例,一切似乎工作正常,但我在尝试发送电子邮件时遇到了一个奇怪的错误.我正在使用sendgrid入门插件来发送电子邮件.完整错误如下:

NoMethodError: undefined method `index' for #<Mail::Message:0x000000048daf28>
    /app/.bundle/gems/ruby/1.9.1/gems/mail-2.3.0/lib/mail/message.rb:1289:in `method_missing'
    /app/.bundle/gems/ruby/1.9.1/gems/mail-2.3.0/lib/mail/encodings.rb:117:in `value_decode'
    /app/.bundle/gems/ruby/1.9.1/gems/mail-2.3.0/lib/mail/encodings.rb:101:in `decode_encode'
    /app/.bundle/gems/ruby/1.9.1/gems/mail-2.3.0/lib/mail/fields/unstructured_field.rb:74:in `do_decode'
Run Code Online (Sandbox Code Playgroud)

如果我只是生成消息对象而不调用它的传递并检查它一切似乎都很好.我的生产应用程序没有看到此错误.你能告诉我这个错误意味着什么以及如何解决它吗?谢谢.

ruby-on-rails actionmailer heroku

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