这个 ruby 错误与 <<~ 和 &.意味 着?



恢复和旧的代码库。将其安装在新的docker环境中。当我启动应用程序时,我会收到这个错误。我不是一个红宝石色的家伙,不知道这是什么<lt;~也不是&。方法我已经从Gemfile安装了捆绑包。此应用程序仍在另一个环境中运行,但我目前没有访问该环境的shell权限。

WARNING: If you plan to load any of ActiveSupport's core extensions to Hash, be
sure to do so *before* loading Sinatra::Application or Sinatra::Base. If not,
you may disregard this warning.
Set SINATRA_ACTIVESUPPORT_WARNING=false in the environment to hide this warning.
rake aborted!
SyntaxError: /usr/local/bundle/gems/database_cleaner-active_record-2.0.0/lib/database_cleaner/active_record/base.rb:22: syntax error, unexpected <<
<<~SQL
^
/usr/local/bundle/gems/database_cleaner-active_record-2.0.0/lib/database_cleaner/active_record/base.rb:62: syntax error, unexpected '.'
...veRecord::Base.configurations&.configs_for(name: db)&.config...
...                               ^
/usr/local/bundle/gems/database_cleaner-active_record-2.0.0/lib/database_cleaner/active_record/base.rb:62: syntax error, unexpected '.'
...ations&.configs_for(name: db)&.configuration_hash
...                               ^
/usr/local/bundle/gems/database_cleaner-active_record-2.0.0/lib/database_cleaner/active_record/transaction.rb:1:in `require'
/usr/local/bundle/gems/database_cleaner-active_record-2.0.0/lib/database_cleaner/active_record/transaction.rb:1:in `<top (required)>'
/usr/local/bundle/gems/database_cleaner-active_record-2.0.0/lib/database_cleaner/active_record.rb:3:in `require'
/usr/local/bundle/gems/database_cleaner-active_record-2.0.0/lib/database_cleaner/active_record.rb:3:in `<top (required)>'
/usr/local/bundle/gems/database_cleaner-2.0.1/lib/database_cleaner.rb:1:in `require'
/usr/local/bundle/gems/database_cleaner-2.0.1/lib/database_cleaner.rb:1:in `<top (required)>'
/app/config/environments/shared.rb:9:in `<top (required)>'
/app/tasks/db.rake:2:in `require_relative'
/app/tasks/db.rake:2:in `block in <top (required)>'
/usr/local/bundle/gems/rake-13.0.3/exe/rake:27:in `<top (required)>'
Tasks: TOP => dl:start:all => dl:start:job_queue => dl:start:queue => environment
(See full trace by running task with --trace)

正如enginesmnky在评论中指出的那样,两个操作符——歪歪扭扭的heredocs(<<~(和安全导航操作符(&.(——都是在Ruby版本2.3中引入的。这意味着您的应用程序至少需要Ruby 2.3,并且不支持旧版本。

同时,在将Ruby环境更新到最新版本时,应用程序会抱怨缺少FixnumBignum。这两个类在Ruby2.4中都被弃用,不久之后就被删除了。这意味着您的应用程序不支持Ruby 2.4或更高版本。

也就是说:看起来您的应用程序只能在Ruby2.3上运行。我建议安装最新的Ruby 2.3版本2.3.8,然后再试一次。

请注意,即使是2.3.8版本也已经有两年半的历史了,Ruby 2.3已经报废,没有维护,也不会再得到任何错误修复或安全更新。即使您的应用程序使用Ruby 2.3.8,我也强烈建议将其更新为Ruby 2.7.3或更好的Ruby 3.0.1

相关内容

最新更新