问题标签 [ruby-on-rails-4]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
13474 浏览

ruby-on-rails - Rails ActiveSupport:关注和私有方法

这是一个关于rails关注的好主意:http: //37signals.com/svn/posts/3372-put-chubby-models-on-a-diet-with-concerns

制作不属于公共 API 的非常小的方法也是一个好主意。在不使用关注点的情况下,它们将成为 ruby​​ 类中的私有方法。

在 Rails ActiveSupport::Concern 模块中创建私有方法有意义吗?如果是这样,private 是否适用于关注定义中的常规实例方法和类方法?

0 投票
1 回答
1411 浏览

ruby - Rails 获取 radio_button 值

我正在尝试从表单中获取单选按钮的值:

现在,当我检查控制器中的参数时:

现在,如果未单击单选按钮,我得到的值为空。(我指定了一个默认值,为什么这给我 null?)

如果单击单选按钮,Rails 记录器会给我错误。

它在 null/false 之间切换,而不是在 false/true 之间切换。有任何想法吗?

0 投票
3 回答
877 浏览

ruby-on-rails - Fresh Rails 4 应用程序无法识别“rails”命令,坚持我使用“rails new”

我已经使用rails new来自 Rails 主分支的克隆的命令成功地创建了一个新应用程序。该应用程序看起来不错,绝对是 Rails 4。但是当我尝试运行任何其他rails命令时,提示符给了我:

我试过rails,bundle exec railsbin/rails, 都给出相同的提示。我创建一个新的 Rails 4 应用程序的步骤是:

  1. 将 Rails 主分支克隆到我的本地计算机
  2. 创建一个新的 rvm gemset,并使用它 (1.9.3)
  3. rails/railties/bin/rails new myapp --edge -T --skip-index-html
  4. cd myapp然后跑bundle installbundle update只是为了确定
  5. 运行任何rails命令

我究竟做错了什么?rvm-prompt建议我使用正确的 gemset。我确实注意到的一件事是,即使我从我的 Gemfile 中删除 jbuilder 并运行 a bundle update,它仍然出现在我的gem list. 我的 rvm 有问题吗?

rails-v输出是'Rails 4.0.0.beta'

0 投票
2 回答
451 浏览

ruby-on-rails - ruby 开发工具包的问题

我在使用从 ruby​​installer.org/downloads 获得的 DevKit 时遇到了问题。我正在按照https://github.com/oneclick/rubyinstaller/wiki/development-kit的说明进行操作。当我通过运行来测试我的安装时,gem install rdiscount --platform=ruby我得到以下信息:

如果您需要更多信息,请告诉我。谢谢!

0 投票
2 回答
1711 浏览

ruby-on-rails - 如何在不使用 Devise 登录的情况下检查用户密码是否正确?

我正在编写一个时钟系统,用户通过输入他们的usernamepassword在特定的计算机中有效地打他们的时钟。时钟用户将首先登录。username我只需要通过检查他们输入的password内容是否正确来注册用户出现。我怎样才能做到这一点Devise

我不想真正让他们登录,只检查他们是否是他们所说的人。timeclock 用户是唯一始终登录的用户。

0 投票
1 回答
753 浏览

ruby-on-rails-3 - Turbolinks 与 JS MVC 框架?

我们已经将 EmberJS 应用为框架并使用 Rails 3.2 来迁移到 Rails 4.0 Rails 社区正在为 turbolinks 进行大量推送,一方面我们的网站与客户端框架配合得很好。EmberJS 为在我们需要的末端编写自定义代码提供了很好的支持。

我的问题是人们如何将 turbolinks 视为制作动态页面的一种方式。与 turbolinks 一起隐含意味着我们必须尽可能精简 Javascript(这意味着任何 JS 框架都是多余的)。那么,我们如何看待 JS 框架的增长/支持以及 turbolinks 是否会成为事实。

现在是开始扩大 turbolink 的合适时机吗?有哪些好的参考资料。

0 投票
1 回答
164 浏览

ruby-on-rails - “bundle install --deployment”如何在 Rails 4 中工作

用于生产中的 gem 依赖管理,bundle install --deployment用于将所有 gem 隔离到vendor/bundle. 从 rails 4 开始,vendor目录已被删除。标志将如何--deployment工作?这个选项也会被删除吗?

0 投票
1 回答
1671 浏览

ruby-on-rails - 如何使用 RSpec 在 Rails 4 中测试质量分配

给定一个简单的用户模型,在 Rails 4 中,名称、电子邮件和管理员布尔值,使用 RSpec 测试批量分配的最佳方法是什么?

这是用户控制器:

以及两种不同的测试方法:

在 user_spec.rb

或在 users_controller_spec.rb

两者都不起作用 - 前者只是创建了一个 admin 设置为 true 的用户(未通过测试) - 大概这绕过了 strong_parameters。后者有效,但前提是 user_params 方法不是私有的。(官方文档建议将其设置为私有。注意 - 在 user_spec 中查看 MassAssignment 错误也不起作用(不会引发错误)。

注意 - 实际上在视图中将用户设置为 admin 可以正常工作 - admin 属性被过滤掉并且一切正常,但真的希望在测试中看到它正常工作。

另一种建议是将 shoulda-matchers gem 与 user_spec.rb 一起使用:

(这也不起作用),给出:

(我认为这个错误是由于 shoulda-matchers 还不兼容 Rails 4)。

提前致谢!

0 投票
12 回答
35562 浏览

ruby-on-rails - Rails Observer 4.0 的替代品

随着 Observers 正式从 Rails 4.0中删除,我很好奇其他开发人员正在使用什么来代替他们。(除了使用提取的 gem。)虽然观察者肯定被滥用并且有时很容易变得笨拙,但除了缓存清除之外,还有许多有用的用例。

例如,需要跟踪模型更改的应用程序。观察者可以轻松地观察模型 A 的变化,并在数据库中记录模型 B 的变化。如果你想观察多个模型的变化,那么一个观察者就可以处理。

在 Rails 4 中,我很好奇其他开发人员使用什么策略来代替观察者来重新创建该功能。

就个人而言,我倾向于一种“胖控制器”实现,在每个模型控制器的创建/更新/删除方法中跟踪这些更改。虽然它略微夸大了每个控制器的行为,但它确实有助于提高可读性和理解性,因为所有代码都在一个地方。缺点是现在有非常相似的代码分散在多个控制器中。将该代码提取到辅助方法中是一种选择,但您仍然需要调用那些到处都是的方法。不是世界末日,但也不完全符合“瘦控制器”的精神。

ActiveRecord 回调是另一种可能的选择,尽管我个人不喜欢这种方法,因为在我看来,它倾向于将两个不同的模型过于紧密地耦合在一起。

所以在 Rails 4,没有观察者的世界里,如果你必须在另一个记录被创建/更新/销毁之后创建一个新记录,你会使用什么设计模式?胖控制器、ActiveRecord 回调,还是完全其他的东西?

谢谢你。

0 投票
3 回答
21916 浏览

ruby - 如何知道 ruby​​ 中什么不是线程安全的?

从 Rails 4 开始,默认情况下,一切都必须在线程环境中运行。这意味着我们编写的所有代码和我们使用的 所有gem 都必须是threadsafe

所以,我对此有几个问题:

  1. ruby/rails 中什么不是线程安全的?Vs什么是 ruby​​/rails 中的线程安全?
  2. 是否有已知是线程安全的宝石列表,反之亦然
  3. 是否有不是线程安全示例的常见代码模式列表@result ||= some_method
  4. ruby lang核心中的数据结构,例如Hashetc线程安全吗?
  5. 在 MRI 上,有一个GVL/GIL表示一次只能运行 1 个 ruby​​ 线程,除了IO,线程安全更改会影响我们吗?