小编sma*_*rgh的帖子

RuntimeError:无法修改冻结的数组

我将Ruby on Rails应用程序更新为Ruby on Rails 5.1.4.当我运行我的测试时,每个测试都会返回以下错误:

An error occurred while loading {path to specific spec file}
Failure/Error: require File.expand_path('../../config/environment', __FILE__)

RuntimeError:
  can't modify frozen Array
# ./config/environment.rb:6:in `<top (required)>'
# ./spec/rails_helper.rb:4:in `<top (required)>'
Run Code Online (Sandbox Code Playgroud)

我该如何解决这个问题?

编辑:

我正在从5.0.0.1更新到5.1.4.

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

20
推荐指数
0
解决办法
3769
查看次数

使用single_line列表字符串有效地替换多行列表字符串

我正在尝试解析OS X mdls命令的输出.对于某些键,值是值列表.我需要正确捕获这些键值对.所有值列表都以a开头,(然后以a结尾).

我需要能够遍历所有键值对,以便我可以正确地解析多个输出(即mdls运行多个文件以产生单个输出,其中一个文件的元数据结束而另一个文件的开始没有区别) .我在下面有一些示例代码.

有没有更有效的方法来做到这一点?

import re

mdls_output = """kMDItemAuthors                 = (
    margheim
)
kMDItemContentCreationDate     = 2015-07-10 14:41:01 +0000
kMDItemContentModificationDate = 2015-07-10 14:41:01 +0000
kMDItemContentType             = "com.adobe.pdf"
kMDItemContentTypeTree         = (
    "com.adobe.pdf",
    "public.data",
    "public.item",
    "public.composite-content",
    "public.content"
)
kMDItemCreator                 = "Safari"
kMDItemDateAdded               = 2015-07-10 14:41:01 +0000
"""

mdls_lists = re.findall(r"^\w+\s+=\s\(\n.*?\n\)$", mdls_output, re.S | re.M)
single_line_lists = [re.sub(r'\s+', ' ', x.strip()) for x in mdls_lists]
for i, mdls_list in enumerate(mdls_lists):
    mdls_output = mdls_output.replace(mdls_list, single_line_lists[i])
print(mdls_output)
Run Code Online (Sandbox Code Playgroud)

python regex

5
推荐指数
1
解决办法
63
查看次数

标签 统计

python ×1

regex ×1

ruby ×1

ruby-on-rails ×1

ruby-on-rails-5 ×1