#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. Версия 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?