Ошибка при запуске rails-сервера: code

#ruby-on-rails #ruby #ruby-on-rails-4 #rubygems #syntax-error

#ruby-on-rails #ruby #ruby-on-rails-4 #rubygems #синтаксическая ошибка

Вопрос:

Я работаю над проектом Ruby on Rails. У меня все настроено, но когда я пытаюсь запустить сервер, выполнив «rails s», я получаю следующую ошибку:

 /home/syed/Desktop/offerletter/vendor/bundle/ruby/2.2.0/gems/browser-5.1.0/lib/browser/browser.rb:9:in `require_relative': /home/syed/Desktop/offerletter/vendor/bundle/ruby/2.2.0/gems/browser-5.1.0/lib/browser/accept_language.rb:37: syntax error, unexpected '.' (SyntaxError)
        codeamp;.downcase
              ^
/home/syed/Desktop/offerletter/vendor/bundle/ruby/2.2.0/gems/browser-5.1.0/lib/browser/accept_language.rb:44: syntax error, unexpected '.'
        regionamp;.upcase
                ^
    from /home/syed/Desktop/offerletter/vendor/bundle/ruby/2.2.0/gems/browser-5.1.0/lib/browser/browser.rb:9:in `<top (required)>'
    from /home/syed/Desktop/offerletter/vendor/bundle/ruby/2.2.0/gems/browser-5.1.0/lib/browser.rb:3:in `require_relative'
    from /home/syed/Desktop/offerletter/vendor/bundle/ruby/2.2.0/gems/browser-5.1.0/lib/browser.rb:3:in `<top (required)>'
    from /usr/share/rvm/rubies/ruby-2.2.2/lib/ruby/site_ruby/2.2.0/bundler/runtime.rb:81:in `require'
    from /usr/share/rvm/rubies/ruby-2.2.2/lib/ruby/site_ruby/2.2.0/bundler/runtime.rb:81:in `block (2 levels) in require'
    from /usr/share/rvm/rubies/ruby-2.2.2/lib/ruby/site_ruby/2.2.0/bundler/runtime.rb:76:in `each'
    from /usr/share/rvm/rubies/ruby-2.2.2/lib/ruby/site_ruby/2.2.0/bundler/runtime.rb:76:in `block in require'
    from /usr/share/rvm/rubies/ruby-2.2.2/lib/ruby/site_ruby/2.2.0/bundler/runtime.rb:65:in `each'
    from /usr/share/rvm/rubies/ruby-2.2.2/lib/ruby/site_ruby/2.2.0/bundler/runtime.rb:65:in `require'
    from /usr/share/rvm/rubies/ruby-2.2.2/lib/ruby/site_ruby/2.2.0/bundler.rb:114:in `require'
    from /home/syed/Desktop/offerletter/config/application.rb:9:in `<top (required)>'
    from /home/syed/Desktop/offerletter/vendor/bundle/ruby/2.2.0/gems/railties-4.2.2/lib/rails/commands/commands_tasks.rb:78:in `require'
    from /home/syed/Desktop/offerletter/vendor/bundle/ruby/2.2.0/gems/railties-4.2.2/lib/rails/commands/commands_tasks.rb:78:in `block in server'
    from /home/syed/Desktop/offerletter/vendor/bundle/ruby/2.2.0/gems/railties-4.2.2/lib/rails/commands/commands_tasks.rb:75:in `tap'
    from /home/syed/Desktop/offerletter/vendor/bundle/ruby/2.2.0/gems/railties-4.2.2/lib/rails/commands/commands_tasks.rb:75:in `server'
    from /home/syed/Desktop/offerletter/vendor/bundle/ruby/2.2.0/gems/railties-4.2.2/lib/rails/commands/commands_tasks.rb:39:in `run_command!'
    from /home/syed/Desktop/offerletter/vendor/bundle/ruby/2.2.0/gems/railties-4.2.2/lib/rails/commands.rb:17:in `<top (required)>'
    from bin/rails:4:in `require'
    from bin/rails:4:in `<main>'
  

Вещи, которые я пробовал:

  1. установка пакета
  2. обновление пакета

1. Версия Ubuntu — 20.4 LTS

2.rails — 4.2.2 (необходимо поддерживать эту версию по разным причинам)

3.ruby — 2.2.2 (необходимо поддерживать эту версию по разным причинам)

Примечание: Пожалуйста, спросите в разделе комментариев, нужна ли вам какая-либо дополнительная информация от меня, чтобы решить проблему.

Пожалуйста, помогите.

Комментарии:

1. Оператор безопасной навигации (amp;.) введен Ruby 2.3.0 и используется Ruby 2.2.2 . попробуйте обновить ruby до 2.3.0 .

2. @SampatBadhe Спасибо Sampat за ответ, но у меня есть одно ограничение. Это устаревший проект, и я не могу изменить версию rails или ruby. В любом случае я попробую ваше решение, но если вы можете помочь мне с моим конкретным ограниченным сценарием, тогда это было бы лучше.

3. Похоже, вы обновили browser gem. если вы можете понизить этот драгоценный камень до более старой версии, которая у вас была ранее, это решит вашу проблему на данный момент.

4. Возможно, вы захотите попросить автора указать требуемую версию ruby в gemspec gem (или самостоятельно открыть запрос на извлечение). Это вопрос добавления s.required_ruby_version = ">= 2.3.0"

5. @SampatBadhe Возврат драгоценного камня broswer в файле gemlock к версии 1.0.1 решил эту проблему. Спасибо за идею.

Ответ №1:

Безопасный навигатор (amp;.) был введен в Ruby 2.3.0, а вы используете Ruby 2.2.0.

Пожалуйста, используйте try метод или обновите версию Ruby до 2.3.0 для использования safe navigator.

Ответ №2:

Если версия Ruby, которую вы вынуждены использовать, слишком устарела для безопасного навигатора (amp;.), Вы можете пойти в старую школу code.downcase if code или использовать метод try ()

Комментарии:

1. Как это действительно помогает, когда код находится в зависимости, а не в коде приложения OPs?