Почему "rails s" не работает из каталога приложения?
Я в папке с моим приложением, но команда rails s
не работает. Я прочитал довольно много постов о переполнении стека, и большинство из них, похоже, принадлежат пользователям, которых нет в каталоге их приложений.
Кроме того, я создал несколько других приложений. Я проверил их, и сервер Rails работает для всех этих приложений. Это единственный, где я не могу его запустить.
Выход из which rails
:
/Users/jmcrist/.rvm/gems/ruby-2.0.0-p247/bin/rails
Выход из rails s
:
MacBook-Pro:first_app jmcrist$ rails s
Usage:
rails new APP_PATH [options]
Options:
-r, [--ruby=PATH] # Path to the Ruby binary of your choice
# Default: /Users/jmcrist/.rvm/rubies/ruby-2.0.0-p247/bin/ruby
-b, [--builder=BUILDER] # Path to a application builder (can be a filesystem path or URL)
-m, [--template=TEMPLATE] # Path to an application template (can be a filesystem path or URL)
[--skip-gemfile] # Don't create a Gemfile
[--skip-bundle] # Don't run bundle install
-G, [--skip-git] # Skip Git ignores and keeps
-O, [--skip-active-record] # Skip Active Record files
-S, [--skip-sprockets] # Skip Sprockets files
-d, [--database=DATABASE] # Preconfigure for selected database (options: mysql/oracle/postgresql/sqlite3/frontbase/ibm_db/sqlserver/jdbcmysql/jdbcsqlite3/jdbcpostgresql/jdbc)
# Default: sqlite3
-j, [--javascript=JAVASCRIPT] # Preconfigure for selected JavaScript library
# Default: jquery
-J, [--skip-javascript] # Skip JavaScript files
[--dev] # Setup the application with Gemfile pointing to your Rails checkout
[--edge] # Setup the application with Gemfile pointing to Rails repository
-T, [--skip-test-unit] # Skip Test::Unit files
[--old-style-hash] # Force using old style hash (:foo => 'bar') on Ruby >= 1.9
Runtime options:
-f, [--force] # Overwrite files that already exist
-p, [--pretend] # Run but do not make any changes
-q, [--quiet] # Suppress status output
-s, [--skip] # Skip files that already exist
Rails options:
-h, [--help] # Show this help message and quit
-v, [--version] # Show Rails version number and quit
Description:
The 'rails new' command creates a new Rails application with a default
directory structure and configuration at the path you specify.
You can specify extra command-line arguments to be used every time
'rails new' runs in the .railsrc configuration file in your home directory.
Note that the arguments specified in the .railsrc file don't affect the
defaults values shown above in this help message.
Example:
rails new ~/Code/Ruby/weblog
This generates a skeletal Rails installation in ~/Code/Ruby/weblog.
See the README in the newly created application to get going.
Я работаю над Hartl's Rails Tutorial, и он делает немало модификаций в gemfile. Мне интересно, может ли это быть причиной?
source 'https://rubygems.org'
gem 'rails', '3.2.13'
group :development do
gem 'sqlite3', '1.3.5'
end
# Gems used only for assets and not required
# in production environments by default.
group :assets do
gem 'sass-rails', '3.2.5'
gem 'coffee-rails', '3.2.2'
gem 'uglifier', '1.2.3'
end
gem 'jquery-rails', '2.0.2'
group :production do
gem 'pg', '0.12.2'
end
8 ответов
Кажется, вы думаете, что вы не в каталоге rails (ваш вывод говорит, что единственный допустимый способ использования rails - это rails new
).
В зависимости от вашей версии Rails определяет это по-разному. На 3.2 он проверяет файл в script/rails
, Теперь, когда 4.0 был выпущен, он ищет либо script/rails
или же bin/rails
( https://github.com/rails/rails/blob/207fa5c11ddf1cfd696f0eeb07d6466aae9d451e/railties/lib/rails/app_rails_loader.rb#L6)
Предположительно, вы можете обойти это, создав файл rails
в вашем script
каталог (если у вас нет script
каталог, создайте его в корне своего приложения):
#!/usr/bin/env ruby
# This command will automatically be run when you run "rails" with Rails 3 gems installed from the root of your application.
APP_PATH = File.expand_path('../../config/application', __FILE__)
require File.expand_path('../../config/boot', __FILE__)
require 'rails/commands'
Конечно, стоит задуматься, почему у вас нет этого файла. Возможно, стоит убедиться, что ваши рельсы - это та версия, которую вы хотите использовать в первую очередь (rails -v
если версия новее, в этом посте будет показано, как создать новое приложение, используя более старую версию).
Возможные причины:
- вы не в каталоге, который содержит полное приложение рельсы
- ваш
bin
каталог может быть пустым, попробуйте запуститьrake rails:update:bin
(для Rails 4) илиrails app:update:bin
(Рельсы 5)
Все приведенные выше ответы не помогли мне. Что решило мою проблему для Rails 4
было запустить команду в корневом каталоге моего приложения:
rake rails:update:bin
После этого бега rails s
бежал, как и ожидалось.
Если вы используете rvm
или же rbenv
например, чтобы сохранить несколько версий ruby, может быть, по умолчанию rails
версия для этого конкретного ruby
версия отличается от проекта, который вы пытаетесь запустить, и поэтому не может обнаружить ваше приложение.
Чтобы убедиться, что вы используете право rails
В версии вы можете сравнить оба результата. Вот что у меня есть:
$ rails -v
Rails 3.1.0
в
$ bundle exec rails -v
Rails 5.0.0.1
В этом случае вы можете оставить значение по умолчанию rails
версия, а затем использовать:
$ bundle exec rails server
Или установите конкретный rails gem
к тому самому ruby
версия с:
$ gem install rails -v 5.0.0.1
$ rails -v
Rails 5.0.0.1
И затем запустите его с помощью менее подробной команды:
$ rails s
Я надеюсь, что это станет полезным для других людей в такой же ситуации!
Вы, вероятно, еще не связали свои драгоценные камни:
# from command line
bundle install
У меня была эта проблема, мне потребовалось несколько минут, чтобы понять, что я забыл изменить активную версию Ruby с помощью chruby. Различные Ruby подразумевали другую версию Rails, которая искала соответствующий файл в другой папке.
Это работает для меня.!!!(ПРИМЕЧАНИЕ: запустите эти команды в приложении rails)
rake db:migrate RAILS_ENV=development;
Запустите эту команду, чтобы сгенерировать /bin
rake rails:update:bin
ИЛИ
rake app:update:bin
=============================================
Тогда вы получите такой экран (In the Go with Y)
bin/rails? (enter "h" for help) [Ynaqdhm] Y
Затем вы можете запустить сервер, используя
rails s
Сначала уточните путь к вашему местоположению, а затем
bundle install
Если все еще не работает, введите
/bin/bash --login
bundle install