Tag: ruby on rails

是puma唯一的multithreading导轨4 http服务器?

我已经将我们的堆栈转换为Rails 4(是的!) 我希望利用线程安全的代码。 Puma工作起床,停止它似乎是一个不同的问题:( Puma是唯一的multithreading导轨吗? Thin -> EventMachine Unicorn -> Forking Puma -> multi-threaded Mongrel -> don’t care Webbrick -> don’t care

采用自定义`redirect_to`方法的缺点和支持

为了在每次params包含redirect_uri值时将用户重定向到自定义网页,我正在评估以这种方式使用自定义redirect_to方法 (通过@kiddorails ): class ApplicationController < ActionController::Base def custom_redirect_to(url) redirect_to (params[:redirect_uri].present? ? params[:redirect_uri] : url) end end def create @post = Post.new(params) if @post.save custom_redirect_to @post else render 'new' end end 但是,我想知道可能的缺点并获得采用上述解决方案的支持。

Rails 4嵌套资源/路由……差不多……?

我有三个模型 – 用户,制造商和生产线。 我需要用户拥有多个制造商,并且每个制造商都有多条生产线。 我终于将行最终拉到_form上的manufacturer_id,但现在它没有保存’line’的’name’,只保存id。 它会将’name’保存为nil,就像它没有从表单中传递名称一样。 我已经阅读了关于此的标准文档,我不能为我的生活让它工作。 它一直挂在控制器的最后创建阶段,我感觉我在窗体和控制器的路径上有很多错误。 希望有人能够轻松对待我并帮助我让整个shebang工作。 user.rb class User < ActiveRecord::Base devise :database_authenticatable, :registerable, :recoverable, :rememberable, :trackable, :validatable has_many :manufacturers end manufacturer.rb class Manufacturer < ActiveRecord::Base belongs_to :user has_many :lines end line.rb class Line < ActiveRecord::Base belongs_to :manufacturer end lines_controller.rb class LinesController < ApplicationController before_action :set_line, only: [:show, :edit, :update, :destroy] before_filter […]

使用Rails和Devise进行function测试。 把什么放在我的灯具里?

嗨,我想对使用Devise和CanCan的Rails 3应用程序进行一些function测试。 在我的用户模型中,我有用户年龄,我想测试一个用户只能访问某个页面,如果它们是: 登录 超过35岁 我在Devise文档中看到我可以使用:* sign_in *并且我把它放在我的测试中它似乎工作 – 测试没有错误,因为我有: include Devise::TestHelpers 在我的* test_helper.rb * 当我拿出它时,我的测试会出错,因为* sign_in *没有定义。 所以这不是帮手问题。 当我运行测试并检查span#loggedin是否有一次出现时,测试失败,因为有0次出现。 span#loggedin仅出现* if user_signed_in?* 我需要在我的灯具或测试中创建一个也是完全注册用户(已确认等)的测试用户? 查看代码: User is signed in User age is 测试代码: test “should get index” do sign_in :one get :index assert_response :success assert_select ‘span#loggedin’, :count => 1 end 夹具: one: email: jez@example.com age: […]

集成测试:`assert_select’a ‘`对于分页页面失败

我有很多集成测试,看起来像: first_page_of_users = User.page(1) # Using kaminari for pagination. first_page_of_users.each do |user| assert_select ‘a[href=?]’, user_path(user) end 这些测试失败并显示错误消息,例如: Expected at least 1 element matching “a[href=”/users/1″]”, found 0.. 我将puts @response.body添加到测试中,以查看它响应的代码。 对于响应正文中包含的所有用户,它具有正确的href,例如href=”/users/75938613″ 。 但是, /users/后面的数字要高得多,并且“users1”确实不存在(不仅仅是url不存在,而且整个记录不在该页面上)。 如果我确保只有几个固定装置,以便不适用分页,则测试通过。 这让我觉得好像有了分页, first_page_of_users = User.page(1)应用的顺序与first_page_of_users.each do |user|的顺序不同first_page_of_users.each do |user| assert_select ‘a[href=?]’, user_path(user)期望… 可能导致此错误的原因是什么? 它适用于我的应用程序的不同页面和模型。 更新:对于另一个模型,即使我尝试 Organization.all.each do |org| puts @response.body assert_select ‘a[href=?]’, organization_path(org) […]

Rails.cache在不同的线程中没有缓存?

我在rails项目中遇到缓存方法结果的问题。 我来到这个模拟两个不同请求的代码: [ Thread.new { puts Rails.cache.fetch(‘a’, expires_in: 2.seconds) { rand } }, Thread.new { puts Rails.cache.fetch(‘a’, expires_in: 2.seconds) { rand } } ] 尝试在rails控制台中执行它。 如果我尝试在控制台中作为输出运行它,我得到不同的数字。 怎么可能? 但是例如这段代码(带睡眠)按预期工作: [ Thread.new { sleep(1); puts Rails.cache.fetch(‘a’, expires_in: 2.seconds) { rand } }, Thread.new { puts Rails.cache.fetch(‘a’, expires_in: 2.seconds) { rand } } ]

在EC2上部署Rails应用程序

在过去的一周里,我一直在玩橡胶gem,似乎无法让它发挥作用。 我已经决定手动设置我的EC2实例会更容易。 问题是我不知道怎么做。 谷歌也没有为新手提供太多帮助。 有什么建议? 真的很感激。

是什么导致这个未定义的方法`model_name’为Hash:Class

我试图在rails中实现一个链接,指向一个带有delete:方法的url,并且在url中有一些params,我正在尝试的是: 请注意my_param:country.id我试图传入。这给了我结果: undefined method `model_name’ for Hash:Class 由于参数中的哈希值。 不幸的是我需要在那里,因为我试图将一个额外的参数传递到url(my_param,在这个例子中是country.id) 据我所知,这是将params传递到rails中的link_to的正确方法。 我使用的正常link_to(没有my_param)在下面,完美地运行: 那么如何将我的参数纳入此url? 提前致谢。 ( 这是我认为这应该起作用的原因 )

已销毁的嵌套模型轨道中的validates_uniqueness_of

我有一个Project模型,它接受Task的嵌套属性。 class Project :true end class Task < ActiveRecord::Base validates_uniqueness_of :name end 任务模型中的唯一性validation在更新Project时会出现问题。 在编辑项目时,我删除任务T1,然后添加一个同名T1的新任务,唯一性validation限制了项目的保存。 params hash看起来像 task_attributes => { {“id” => “1”,”name” => “T1”, “_destroy” => “1”},{“name” => “T1”}} 在销毁旧任务之前完成对任务的validation。 因此validation失败。任何想法如何validation它不会认为任务被销毁?

根据select(Rails)分别获取并显示数据库行中的所有值

嗨,我被困在制作发票申请表。 我想有一个选项,您可以从customers表中添加现有客户,并将这些值添加到发票中。 我想要显示的值是company_name , vat_number和iban_number 。 我试过这样做: 但显然这只能得到company_name的值。 我尝试使用collection.select但是它也只获得数据库行的一个值而不是全部3个值。 我希望能够从仅包含company_name的列表或表行中进行选择,但是当我单击该company_name时,它还必须显示vat_number和iban_number (单独地,在页面的不同部分)。 我的发票/ _form中的这样的东西是最佳的: 这是我的发票控制器: class InvoicesController < ApplicationController before_action :set_invoice, only: [:show, :edit, :update, :destroy] before_action :authenticate_user! # GET /invoices # GET /invoices.json def index @invoices = current_user.invoices.all flash.now[:notice] = "U haven't added any invoices yet" if @invoices.empty? end # GET /invoices/1 # GET /invoices/1.json […]