标签: ruby-on-rails-5

如何在Rails 5中禁用turbolink?

处理websockets时,这一直是一个令人头痛的问题,除了添加bug之外,它还会破坏我的性能.由于ActionCable是我升级的全部原因,我非常想完全摆脱它.

ruby-on-rails-5

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

在rails 5.1及更高版本中使用什么而不是`render:text`(以及`render nothing:true`)?

Rails 5.1 删除了一大堆以前弃用的方法.其中有老朋友render :text.

当您需要渲染一些文本但不想要视图模板的开销时,它非常有用.例子:

render text: "ok"
render text: t('business_rules.project_access_denied'), status: 401
Run Code Online (Sandbox Code Playgroud)

用什么代替?

ruby ruby-on-rails ruby-on-rails-5

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

Rails 5,Rspec:在架构中找不到环境数据

将Rails应用程序升级到Rails 5后,运行RSpec测试会出现以下错误:

rails aborted!
ActiveRecord::NoEnvironmentInSchemaError: 

Environment data not found in the schema. To resolve this issue, run: 

    bin/rails db:environment:set RAILS_ENV=test
Run Code Online (Sandbox Code Playgroud)

但是,这bin不存在,我似乎无法使用bundle binstubs rails或生成它rake rails:update:bin.

我也尝试过:

rails db:environment:set RAILS_ENV=test
rake db:environment:set RAILS_ENV=test
Run Code Online (Sandbox Code Playgroud)

有在Github上一个相关的问题在这里.

我该如何解决这个错误?

rspec ruby-on-rails rspec-rails ruby-on-rails-5

52
推荐指数
5
解决办法
2万
查看次数

为什么Rails 5使用ApplicationRecord而不是ActiveRecord :: Base?

我们知道Rails 5 ApplicationRecord作为一个抽象类添加,它由我们的模型(ActiveRecord)继承.

但基本上,我认为我们用ApplicationRecord做的每一项技术要求,我们都可以做到ActiveRecord::Base.例如:

module MyFeatures
  def do_something
    puts "Doing something"
  end
end

class ApplicationRecord < ActiveRecord::Base
  include MyFeatures
  self.abstract_class = true
end
Run Code Online (Sandbox Code Playgroud)

所以现在每个模型都会附上行为MyFeatures.但我们也可以在Rails 4中实现这一点:

ActiveRecord::Base.include(MyFeatures)
Run Code Online (Sandbox Code Playgroud)

那么使用的好处是什么ApplicationRecord,您认为有必要添加ApplicationRecord吗?

ruby-on-rails ruby-on-rails-4 ruby-on-rails-5

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

Rails 5 API Controller中未定义的实例方法"respond_to"

--api我创建的rails 5中有一个错误

NoMethodError (undefined method `respond_to' for #<Api::MyController:0x005645c81f0798>
Did you mean?  respond_to?):
Run Code Online (Sandbox Code Playgroud)

但是,在rails 4.2的文档中,它说http://edgeguides.rubyonrails.org/4_2_release_notes.html

respond_with和相应的类级别respond_to已被移动到响应者gem.将gem'responseders','〜> 2.0'添加到您的Gemfile中以使用它:

实例级的respond_to不受影响:

我正在调用实例方法.怎么了?

class ApplicationController < ActionController::API
end

# ...
class Api::MyController < ApplicationController

  def method1
    # ...
    respond_to do |format|
      format.xml { render(xml: "fdsfds") }
      format.json { render(json: "fdsfdsfd" ) }
    end
Run Code Online (Sandbox Code Playgroud)

ruby rest ruby-on-rails ruby-on-rails-5

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

LoadError:无法加载'listen'gem(Rails 5)

我有一个API模式Rails 5应用程序,不会让我运行rake routesrails s.我得到的错误是:

$ rake routes
rake aborted!
LoadError: Could not load the 'listen' gem. Add `gem 'listen'` to the development group of your Gemfile
.../config/environment.rb:5:in `<top (required)>'
LoadError: cannot load such file -- listen
.../config/environment.rb:5:in `<top (required)>'
Tasks: TOP => routes => environment
(See full trace by running task with --trace)
Run Code Online (Sandbox Code Playgroud)

我已经验证listen了我的Gemfile中的开发组:

group :development do
  gem 'listen', '~> 3.1.5'
  # Spring speeds up development by keeping your application running in the background. …
Run Code Online (Sandbox Code Playgroud)

ruby-on-rails listen ruby-on-rails-5

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

如何解决弃用警告"方法to_hash已弃用,将在Rails 5.1中删除"

我正在尝试更新到Rails 5,我收到以下弃用警告:

弃用警告:方法to_hash已弃用,将在Rails 5.1中删除,因为ActionController::Parameters不再继承哈希.使用此弃用行为会暴露潜在的安全问题.如果您继续使用此方法,则可能会在您的应用中创建可被利用的安全漏洞.相反,请考虑使用其中一种未被弃用的文档化方法:http://api.rubyonrails.org/v5.0.0/classes/ActionController/Parameters.html(从/ Data/Projects/portal/trunk/app中的column_header调用) /helpers/application_helper.rb:114)

警告所在的行如下所示:

    link_to(name,
            {
              action: action_name,
              params: params.merge({ order: key, page: nil })
            },
            {
              title: "Sort by this field",
            }) +
Run Code Online (Sandbox Code Playgroud)

如你所见,我不是在打电话to_hash.也许Rails是.也许其他一些宝石.我无从谈论,因为他们认为不值得提供堆栈跟踪.(临提示-它通常值得提供一个堆栈跟踪!)

所以无论如何,我跟着链接,打算找一个替代品,并且merge方法不会出现被弃用,但也许他们只是忘了记录弃用状态,所以我真的不能确定.

那么我应该做些什么来清除这个呢?

ruby ruby-on-rails ruby-on-rails-5

38
推荐指数
1
解决办法
8176
查看次数

不允许请求源:http:// localhost:3001使用Rails5和ActionCable时

尝试使用ActionCable时,Rails 5.0.0.beta2中的应用程序出现服务器问题.

使用localhost:3000可以正常工作,因为这是大多数ActionCable默认的.但是,如果我尝试在端口3001上运行rails服务器,它会给我Request origin not allowed: http://localhost:3001

ActionCable文档提到使用类似的东西ActionCable.server.config.allowed_request_origins = ['http://localhost:3001'],如果我把它放入其中对我有用config.ru

但这似乎是一个非常奇怪的地方.我觉得它应该能够进入初始化文件或我的development.rb环境配置文件.

为了进一步证明我应该允许它进入那里,该设置ActionCable.server.config.disable_request_forgery_protection = true可以忽略请求源,即使我将它包含在development.rb中也是如此.

为什么会ActionCable.server.config.disable_request_forgery_protection在development.rb中工作,但ActionCable.server.config.allowed_request_origins不能(但在config.ru中工作)?

这不是一个紧迫的问题,因为我有几种选择作为解决方法.我只是想知道我是否遗漏了一些明显的关于我认为这应该如何工作的东西.

ruby-on-rails ruby-on-rails-5 actioncable

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

如何在Rails 5上禁用coffeescript

最近,我开始了新的rails 5.1.4项目,但我忘了补充--skip-coffeerails new.

有没有办法在不创建新项目的情况下删除coffeescript依赖项?

提前致谢.

coffeescript ruby-on-rails-5

34
推荐指数
1
解决办法
4393
查看次数

来自控制台的ActionCable.server.broadcast

我可以在控制器中使用以下代码,但不能在控制台中使用(两个开发环境).我正在使用Rails 5.0.0.beta2.

ActionCable.server.broadcast 'example_channel', message: '<p>Test</p>'
Run Code Online (Sandbox Code Playgroud)

控制台:

>> ActionCable.server.broadcast 'example_channel', message: '<p>Test</p>'
[ActionCable] Broadcasting to example_channel: {:message=>"<p>Test</p>"}
=> []
Run Code Online (Sandbox Code Playgroud)

我怎样才能在控制台中使用它?

ruby-on-rails ruby-on-rails-5 actioncable

32
推荐指数
1
解决办法
9017
查看次数