问题标签 [ruby-2.2]

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 投票
0 回答
30 浏览

ruby - Ruby 中复数的舍入问题

在 IRB(使用 Ruby 2.2 版)中,如果我尝试通过将 -1 的平方根提高到 0.5 的幂来获得平方根,我会得到奇怪的结果:

这看起来非常接近,但是有人知道舍入问题的出处吗?

0 投票
0 回答
458 浏览

api - 为什么 Rails 5 边缘版 API-only 应用程序在 Gemfile 中包含 Sprockets 和 SAAS?

我使用以下命令生成了一个基于 Rails 5 edge 版本的仅骨架 API 应用程序:

它的Gemfile包括 Sprockets 和 SASS gems,可以在其中看到。

我只是想知道 Sprockets 和 SASS 应该在仅 API 的应用程序中起到什么作用?是故意这样做还是在 Rails 5 正式发布时应该修复。

我还观察到,当生成 Rails 应用程序时,生成器确实创建了 assets 文件夹,但是稍后将其删除,如下所示的输出所示:

谢谢。

0 投票
1 回答
247 浏览

ruby-on-rails-4 - Rails - 实现“点赞”功能并体验无限循环

老实说,我什至不知道从哪里开始解决这个问题,但我已经在我的网站上实现了一个“喜欢”功能,当我查看控制台时,我看到了一个非常长的 SQL 语句。

我不会发布我所有的 dev.log,因为它太长了,但这里有一些错误的片段..

然后它只是在大约 10,000 行上重复该 sql 语句,然后切换到这个错误

我有点卡住了,我希望有人能指出正确的方向。

这是我的代码:

控制器

模型:

我的其他控制器中有相应的“has_many””

移民:

看法:

0 投票
0 回答
467 浏览

active-model-serializers - ActiveModelSerializers (0.10.0.rc3) 对象的关系不是使用默认的 FlattenJson 适配器生成的

Rails 5 Alpha 版本 / Ruby 2.2.3 / active_model_serializers (0.10.0.rc3)(以下简称 AMS

我已经有一个使用Rabl-Rails生成 JSON 响应的纯 API 应用程序。

我正在努力使其准备好与 Rails 5 一起使用,作为评估 Rails 5 内置 API 功能的一部分,尤其是 ActiveModel::Serializers 可以提供的可重用性和灵活性。

我创建了几个序列化程序

应用程序中的 JSON 响应是使用任何现有模板以复合方式创建的,并且base_serializer包含有关可以序列化的资源的基本数据。

下面显示的是我最初创建的 3 个序列化程序:

对于 ActiveRecord 型号设备

对于 ActiveRecord 模型客户端

对于 ActiveRecord 模型提供者

提供者模型

客户模型

设备型号

问题

序列化 Device 对象时,其客户端节点不包含Client::BaseSerializer中定义的客户端提供程序节点belongs_to :provider, serializer: Provider::BaseSerializer

但是,在序列化 Client 对象时,它包含提供程序节点:

从上面可以看出,当我们在其“客户端”属性中生成设备的 json 时,并没有生成客户端的提供者关系。但是,当我们生成客户端的 json 时,它包含“提供者”属性。传递任何包含选项,如下所示

如此处所述没有任何效果。

我深入研究了 AMS 源代码,发现include只有当适配器是JSON API. 但是,默认适配器是base.config.adapter = :flatten_json.

从适配器的实现和方法(如下所示)中可以看出,ActiveModel::Serializer#attributes(options = {})在序列化期间仅考虑以下数据:

  1. 对象的属性
  2. 对象的关系及其属性。不考虑关系自身的关系。

ActiveModel::Serializer::Adapter::FlattenJson < ActiveModel::Serializer::Adapter::Json

ActiveModel::序列化器

由于我的 JSON 结构是自定义和预定义的,因此我无法切换到 JSON API 适配器。这留下了仅使用属性的选项,例如

但是这样我就无法灵活地为:provider 属性使用自定义序列化程序。

问题:

  1. 有什么办法可以解决上述问题并达到预期的效果?

  2. 是否有任何规定可以忽略属性被包含在序列化哈希中?例如,在我的 JSON 模板中使用 Rabl-Rails,我可以执行以下操作:

    /li>

如果DeviceDecorator#exclude_client?返回 false,则不会在 JSON 中生成 :client 节点。

谢谢。

0 投票
3 回答
3013 浏览

ruby - 在 Ruby 中找到第一个可能匹配的哈希键的优雅方式

假设我有用户输入,可以是这样的:

或这个:

我想根据提供的内容返回 :user_id 或 :app_id 。我可以做这个:

有没有更优雅,更红宝石,惯用的方式来做到这一点?

这比上面好还是坏?:

(答案不需要严格来自 Ruby 2.2 标准库,也欢迎使用 Rails 方法)

0 投票
1 回答
1459 浏览

ruby - 垃圾符号集合 Ruby 2.2.1

所以从 Ruby 2.2+ 版本开始引入符号的垃圾回收。我在 irb 中编写了以下代码片段:

因此,正如预期的那样,它收集了所有动态生成的符号to_sym

那么 GC 是如何知道要收集哪些符号的呢?即使它们在程序中被引用,它会收集符号吗?符号垃圾回收是如何工作的?如果程序中引用了我创建的符号之一,它还会收集它吗?

我正在使用 Ruby 2.2.1。

0 投票
1 回答
483 浏览

ruby - Ruby 2 和 Rails 4 编码问题

我正在开发一个从 rails 3.2 和 ruby​​ 1.9.x 迁移到 ruby​​ 2.2.x 和 rails 4.2.4 版本的项目。

当项目进入生产服务器时,它开始抛出如下编码错误:

"\xC3" from ASCII-8BIT to UTF-8

后跟一个堆栈跟踪,如:

和第chat_controller.rb6行transcript方法:

在我们代码库的另一点中,我们使用如下代码解决了这个问题:

但同样的错误开始出现在其他部分。

有没有人通过这个,你是如何处理的?

提前谢谢你。

0 投票
2 回答
185 浏览

ruby - 当使用 :: 指定模块时,为什么 Ruby 找不到更高范围内的类?

我只是在这个问题上停留了一段时间。拿这个基地:

稍后,我可以通过执行以下操作在内部定义Foo扩展类:Test

但是,如果我尝试通过使用::指定模块来最小化缩进:

这失败了:

NameError: 未初始化的常量 Top::Foo::Test

这是一个错误,还是只是 Ruby 解析变量名的方式的逻辑结果?

0 投票
1 回答
1906 浏览

ruby-on-rails - 如何列出类的所有方法(不是扩展和包含方法)

使用 Ruby 2.2.1,如何列出仅在过滤掉方法的类/文件include中定义的类的所有方法(最好是字符串名称数组)。extend我也想区分类方法和实例方法。

目前,我可以使用所有未继承的方法,MyClass.methods(false)但这仍然包括作为include模块一部分的方法。

明确地说,我有:

我想得到:

更新:

当我在单独的 irb 控制台中运行 @Wand Maker 时,它的答案是正确的。但是,我仍然有一个问题,我特别包含ActionView::Helpers::UrlHelperMyClass. 我总是得到额外的方法:default_url_options?,default_url_options=default_url_options. 我认为无论是否使用 Rails,include 的行为都是相同的,所以我没有用 Rails 标记这个问题。

我什byebug至在文件末尾添加了MyClass,以便我可以检查类并运行MyClass.singleton_methods(false)或运行MyClass.instance_methods(false). 但它们仍然包括这三种不需要的方法。

我可以手动从数组中删除这三个额外的方法,这样我就可以获得我的类的动态方法列表,但我只是担心将来如果有更新或会添加新方法的东西我的应用程序会中断班级(不知不觉)。

更新:

这 3 种方法似乎只添加到 Rails 3 中(我正在处理的项目),但没有添加到 Rails 4 中(正如我和@Wand Maker 测试的那样)。

这是确切的代码(我已经删除了所有内容,但仍然得到相同的结果/问题)

或者我可以删除该文件:my_class.rb(并将整个代码复制并粘贴到rails console

但是,仍然遇到同样的问题。

0 投票
2 回答
5354 浏览

ruby-on-rails-4 - 如何在 Ruby on Rails 4 中为 post 生成唯一的随机 id?

我想为我的博客应用程序中的帖子生成唯一的帖子标识符。

目前我正在使用SecureRandom.hex(10)为我的博客网站生成唯一的帖子标识符,但我不确定 SecureRandom 是否安全。

有没有其他方法可以做到这一点?