目标:按照 RailsGuides 的建议逐步升级遗留应用程序:升级 Ruby on Rails(从 ruby 2.3.1 和rails 4.2.2)
预期结果:rake assets:precompile成功完成,没有 gem psych 别名错误:Psych::BadAlias
需要帮助:有人可以告诉我如何实施推荐的解决方案:Psych::AliasesNotEnabled: Alias parsing was not enabled. To enable it, pass `aliases: true` to `Psych::load` or `Psych::safe_load` 。(a) 代码是什么,(b) 它属于哪个文件。完整详细信息如下。
实际结果:
我正在从 ruby 2.3.1 和 Rails 4.2.2 更新应用程序:我逐步完成了主要的 ruby 修订版,即 2.4、2.5、2.6,目前正在运行 2.7.0 我将 Rails 更新为,然后出现了~> 5.0psych gem 的问题:
问题:运行:rake assets:precompile导致:rake aborted! / Psych::BadAlias: Cannot load database configuration / Unknown alias: default / Caused by: Psych::BadAlias: Unknown alias: …
尝试使用Capistrano cap deploy部署我的项目:迁移,我在我的database.yml上的测试别名中出错(这在本地服务器上运行正常)
development:
database: db_dev
adapter: mysql2
username: xxxxxx
password: xxxxxx
host: localhost
encoding: utf8
test: &test
database: db_test
adapter: mysql2
username: xxxxxx
password: xxxxxx
host: localhost
encoding: utf8
production:
database: db_prod
adapter: mysql2
username: xxxxxxxx
password: xxxxxxx
host: localhost
encoding: utf8
cucumber:
<<: *test
Run Code Online (Sandbox Code Playgroud)
控制台日志是:
rake aborted!
Psych::BadAlias: Unknown alias: test
/railties-4.0.3/lib/rails/application/configuration.rb:106:in `database_configuration'
/activerecord-4.0.3/lib/active_record/railtie.rb:175:in `block (2 levels) in <class:Railtie>'
/activesupport-4.0.3/lib/active_support/lazy_load_hooks.rb:38:in `instance_eval'
/activesupport-4.0.3/lib/active_support/lazy_load_hooks.rb:38:in `execute_hook'
/activesupport-4.0.3/lib/active_support/lazy_load_hooks.rb:28:in `block in on_load'
/activesupport-4.0.3/lib/active_support/lazy_load_hooks.rb:27:in `each'
/activesupport-4.0.3/lib/active_support/lazy_load_hooks.rb:27:in `on_load'
/activerecord-4.0.3/lib/active_record/railtie.rb:174:in `block in <class:Railtie>'
/railties-4.0.3/lib/rails/initializable.rb:30:in `instance_exec'
/railties-4.0.3/lib/rails/initializable.rb:30:in …Run Code Online (Sandbox Code Playgroud) 我非常喜欢gem server使用本地RubyGems文档索引来引导webserver的命令.
我唯一的问题是:有些宝石没有rdoc文件.
我怎样才能添加缺失的rdoc(所有宝石都是主流宝石,而不是我自己的宝石)?
通过Bundler安装; Rails 2.3.5
Ruby 的 YAML 库 (Psych 4) 的最新更改会导致“不安全”YAML 在包含别名或尝试实例化未指定的类时失败。这在多个地方都有讨论,例如StackOverflow 问题。
我试图弄清楚如何告诉衍生yaml/store库允许加载不安全的 YAML,或者向它提供允许的类列表。
据我所知,该文档很少,阅读后,这是我能想到的唯一合乎逻辑的尝试:
require 'date'
require 'yaml/store'
# 1. These options work perfectly with YAML.load_file, but not with YAML::Store
# 2. These options are not needed in Psych < 4.0
yaml_opts = { aliases: true, permitted_classes: [Time, Date, Symbol] }
store = YAML::Store.new 'log.yml', yaml_opts
data = store.transaction { store[:entries] }
p data
Run Code Online (Sandbox Code Playgroud)
使用此 YAML 文件:
# log.yml
:entries:
- :timestamp: 2018-07-09 00:00:00.000000000 +03:00
:action: Comment
:comment: …Run Code Online (Sandbox Code Playgroud)