Rails 4 не обнаруживает приложения
После обновления до Rails 4 я пытаюсь запустить сервер, но он не запустится. Проще говоря, приложение, похоже, не получает "обнаружено", например, там нет приложения.
~ $ bundle exec rails server
Usage:
rails new APP_PATH [options]
Options:
-r, [--ruby=PATH] # Path to the Ruby binary of your choice
# Default: /app/vendor/ruby-2.0.0/bin/ruby
-b, [--builder=BUILDER] # Path to some application builder (...
-m, [--template=TEMPLATE] # Path to some application template (...
[--skip-gemfile] # Don't create a Gemfile
-B, [--skip-bundle] # Don't run bundle install
Что странно в том, что (старый) системный жемчуг заставит его начать нормально, но не с Bundler.
Почему Rails не запускается?
Я пробовал использовать исходный код CLI, но я не могу понять, что происходит.
(Использование Edge Rails 4.0.0.beta и Ruby 2.0.0.rc)
В случае, если вам интересно, вот список каталогов:
~ $ ls
app config db Gemfile lib mock Rakefile script tmp
bin config.ru features Gemfile.lock log public README.md spec vendor
Ответы
Ответ 1
Rails 4 изменил способ загрузки.
К счастью, вам не нужно запускать rails-new
, так как для этого есть удобная задача.
Заметки о выпуске Rails 4:
6.1 Заметные изменения
- Теперь исполняемые файлы приложения находятся в директории
bin/
. Запустите rake rails:update:bin
, чтобы получить bin/bundle
, bin/rails
и bin/rake
.
Ответ 2
В основном, у меня была моя ленивость. (Хотя лень является матерью эффективности, o)) Я сделал пункт не используя Bundle при запуске Rails-сервера.
Rails 4.0.0.beta изменяет способ загрузки. Но, поскольку я использовал свою "старую" версию Rails, более старую 4.0.0-бета, которую я лежал в своих локальных драгоценных камнях, у которых не было изменений, я не заметил, когда было внесено изменение в мой расслоение.
Теперь, когда пришло время развертывания, обязательный bundle-exec
не мог загрузиться, потому что мой код использовался для загрузки старого пути.
Решение
Как говорится в сообщении: bundle exec rails new .
. И используйте Bundle на этот раз! В этот момент Rails создаст материал шаблона, а именно недостающие загрузочные файлы, например ./bin/rails
.
Он также обновит некоторые файлы конфигурации и попытается перезаписать некоторые вещи. В моем случае все проверяется на исходный элемент управления, поэтому есть немного отличий и выбор того, следует ли перезаписывать или нет и возвращаться после.
Возможно, лучшая идея (я не потрудился) - разветкиться в Git, запустить "обновление" rails-new
, перезаписать все, зафиксировать это, а затем с трехсторонним слиянием с основным ветвь.
Ответ 3
Если папка bin уже установлена, вам может потребоваться сначала запустить bundle install
. Это решило проблему для меня после клонирования репо, которое отлично работало на другой машине.