每个RAILS_ENV运行多个delayed_job实例

我正在使用多RAILS_Env的Rails应用程序 env_name1: adapter: mysql username: root password: host: localhost database: db_name_1 env_name2: adapter: mysql username: root password: host: localhost database: db_name_2 … .. . 我正在使用delayed_job(2.0.5)插件来管理异步和背景工作。 我想为每个RAILS_ENV启动多个delayed_job: RAILS_ENV=env_name1 script/delayed_job start RAILS_ENV=env_name2 script/delayed_job start .. 我注意到我只能为第二个运行一个delayed_job实例,我有这个错误“错误:已经有一个或多个程序正在运行” 我的问题:每个RAILS_ENV都不可能运行多个delayed_job实例吗? 谢谢

在浏览器中渲染模板并更改url字符串?

我有2个动作 – 编辑和更新。 “编辑”中的表单将值提交给“更新”操作。 当保存模型失败时,我渲染编辑teplate,用户看到错误,并且字段预先填充了之前填充的内容。 有一个巨大但对我来说 – 在用户浏览器中的URL面板中有/ user / update,即使(因为)我渲染了编辑模板。 我可以通过在更新操作中将一些参数传递给render方法来改变它吗? 我不希望用户看到除了编辑之外还有任何(更新)操作。 可能吗?

在rails中手动编辑schema.rb是否安全?

我遇到了一个问题,我在rails项目的两个分支上工作,每个项目都有一个迁移来添加一个列。 当时, rake db:migrate:reset导致出现问题,我完全依赖schema.rb来正确表示我的数据库状态。 有一次,我遇到了一个问题,即分支A添加的列进入了分支B的模式。由于migrate:reset不是一个选项,我使用手动编辑模式文件。 我提交了这个更改,它基本上删除了分支A中我不需要在分支B的schema.rb中的列。 在将分支A合并到主服务器之后出现了问题。 当我尝试将分支B重新命名为master时,我仍然在B中进行了提交,以删除模式文件中的列(现在已经变得相关,因为它在master中)。 Git没有看到这方面的冲突并自动合并它。 在我的rebase结束时,我发现我的模式与master中的模式不一致。 我的修复是再次编辑模式文件并手动将以前删除的列添加回模式文件。 我的问题是:这被认为是非传统的吗? 危险吗? 哈克? 现在它涉及一列但如果这涉及多列删除/添加(危险?)解决方案可能导致更多问题和db / schema.rb不一致。

我应该何时在Cucumber和RSpec工作流程中单独测试视图?

经过一段时间的Cucumber和RSpec BDD,我意识到我的许多黄瓜function只是更高级别的视图测试。 当我开始编写我的场景然后转到RSpec时,我不会编写视图规范,因为我可以复制并粘贴部分场景,这将是丑陋的复制。 以这种情况为例 Scenario: New user comes to the site Given I am not signed in When I go to the home page Then I should see “Sign up free” 我知道这不是直接测试视图,但是编写单独的视图规范来检查同样的事情对我来说似乎是多余的。 我接近黄瓜错了吗? 我究竟应该在视图规格中测试什么? 我应该为每个视图编写它们,例如测试视图的操作 def show @project = current_user.projects.first end 或者我应该只测试更复杂的视图?

任意或自定义URL的Railsfunction测试

我的Rails应用程序中有一个名为“Photo”的RESTful资源。 我正在使用Paperclip来为我的照片提供不同的“样式”(缩略图等),并且我使用自定义路径来RESTful访问这些样式: map.connect “photos/:id/style/*style”, :controller => “photos”, :action => “show” 这工作正常,但我想写一个测试,以确保它保持这种方式。 我已经有一个function测试来调用Photo控制器的show动作(实际上是由scaffold生成): test “should show photo” do get :show, :id => photos(:one).to_param assert_response :success end 它测试URL“/ photo / 1”处的动作执行情况。 现在我想测试URL“/ photo / 1 / style / foo”的执行情况。 不幸的是,我似乎无法让ActionController :: TestCase点击该URL; get方法总是需要一个action / id,并且不接受URL后缀。 如何测试自定义url? 更新 在检查@ fernyb的答案时,我在同一个rdoc中找到了这个片段 在测试中,您只需传递URL或命名路由即可获取或发布。 def send_to_jail get’/ jail’assert_response:success assert_template“jail / front”end […]

rails find:使用条件,同时通过不同的命名关联包括相同的表

我有用户发送给其他用户的post。 有两种模式 – :post和:user,以及:post具有以下命名关联: belongs_to :from_user, :class_name => “User”, :foreign_key => “from_user_id” belongs_to :to_user, :class_name => “User”, :foreign_key => “to_user_id” both:user和:post都有“is_public”列,表示单个post和/或整个用户配置文件可以是公共的或私有的。 我的目标是获取公开的post列表,其收件人具有公开个人资料。 同时,我想“包含”发件人和收件人信息以最小化db调用次数。 挑战在于我通过命名关联有效地“包括”了同一个表两次,但在我的“条件”中,我需要确保我只过滤收件人的“is_public”列。 我无法执行以下操作,因为“条件”不接受关联名称作为参数: Post.find(:all, :include => [ :to_user, :from_user ], :conditions => { :is_public => true, :to_user => { :is_public => true }}) 因此,我可以通过在“users”表上执行额外的“join”来实现此目的: Post.find(:all, :include => [ :to_user, :from_user ], :joins => […]

Activeadmin阻止我的jQuery工作

我正在使用jquery拖放我的应用程序,它工作正常。 然后我添加了activeadmin,它停止了我的jquery工作。 我收到这个错误 $(“.draggable_article_image”).draggable is not a function 如果我从active_admin.js中删除此行 //= require active_admin/base 它又开始工作了。 有任何想法吗?

为什么ActionDispatch :: Routing :: RouteSet需要这么长时间

我在Rails 4.2.1上使用Grape为我们的应用程序提供API。 但是当我今天检查Newrelic的性能时,我发现RackApp Proc#call和Grape API::Root#call占用了大量的时间。 (见截图) 然后我尝试使用rack_timer记录中间件中消耗的时间,发现ActionDispatch::Routing::RouteSet占用了大部分时间: Rack Timer (Application Action) — ActionDispatch::Routing::RouteSet: 67.12579727172852 ms Rack Timer (Application Action) — ActionDispatch::Routing::RouteSet: 101.51457786560059 ms Rack Timer (Application Action) — ActionDispatch::Routing::RouteSet: 84.18059349060059 ms Rack Timer (Application Action) — ActionDispatch::Routing::RouteSet: 1236.2565994262695 ms Rack Timer (Application Action) — ActionDispatch::Routing::RouteSet: 8.124351501464844 ms Rack Timer (Application Action) — ActionDispatch::Routing::RouteSet: 55.65309524536133 ms […]

Rails ajax请求只加载视图html

我正在尝试使用rails和jQuery创建一个支持AJAX的网页。 我遇到的问题是,当我尝试使用jQuery的AJAX方法将视图加载到div中时,我将使用视图返回我的应用程序布局。 有没有办法只检索视图数据,如果它是一个AJAX请求,但加载我的应用程序布局,如果它不是一个AJAX请求? 这是我调用的控制器方法: def new @blog = Blog.new respond_to do |format| format.html # Goes to the new.html.erb view. format.xml { render :xml => @blog } end end 谢谢您的帮助。

无法使用Devise批量分配受保护的属性以创建has_many嵌套模型

我已经看过RailsCast,另一个嵌套属性video,很多SOpost,并与此争吵了一段时间,但我仍然无法弄明白。 我希望它有点小。 我有两个模型, User (由Devise创建)和Locker (又名产品愿望清单),我正在尝试为User注册时创建一个Locker 。 我的登录表单有一个新的Locker名称字段(恰当地称为:name ),我试图分配给在新用户注册时创建的锁定器。 我所遇到的只有: WARNING: Can’t mass-assign protected attributes: locker 我已经在我的两个模型中尝试了accepts_nested_attributes和attr_accesible每个组合,但仍然attr_accesible 。 我可以从日志中看到它正在由Devise #create方法处理,我知道Devise不够聪明,无法创建我想要的模型:) 这是我的两个模型的相关部分: # user.rb class User :lockers # Model nesting access accepts_nested_attributes_for :lockers end 和 # locker.rb class Locker :lockups attr_accessible :name, :description end # lockers_controller.rb (create) @locker = current_user.lockers.build(params[:locker]) @locker.save 我假设我需要覆盖Devise的create方法以某种方式让它工作,但我对rails非常新,并且我已经习惯了黑盒子“神奇”的本质。 如果有人能帮助我,我会非常感激。 已经花了太多时间在这上面,因为它是:) 编辑:我意识到我在我的问题中省略了一些东西。 我的Locker模型有三个属性 […]