rails gems from ruby-on-rails ruby gemfile

ruby on rails - gems - ¿Por qué "rails s" no funciona desde el directorio de aplicaciones?



install ruby gems from gemfile (7)

Estoy en la carpeta de mi aplicación, pero la línea de comandos no está funcionando. Leí un buen número de publicaciones sobre Stack Overflow, y la mayoría de ellos parecen ser de usuarios que no están en su directorio de aplicaciones.

Además, construí algunas otras aplicaciones. Los revisé y el servidor Rails funciona para todas esas aplicaciones. Este es el único en el que no puedo lanzarlo.

Salida de which rails :

/Users/jmcrist/.rvm/gems/ruby-2.0.0-p247/bin/rails

Salida de 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.

Estoy trabajando con el Tutorial de Rails de Hartl, y él hace algunas modificaciones al archivo gem. Me pregunto si esta podría ser la causa?

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


Es probable que aún no hayas agrupado tus gemas:

# from command line bundle install


Parece que piensas que no estás en un directorio de rieles (tu salida dice que la única forma válida de usar rieles es con rails new ).

Dependiendo de su versión, Rails identifica esto de manera diferente. En 3.2, comprueba si hay un archivo en script/rails . Ahora que se ha lanzado 4.0, busca ya sea script/rails o bin/rails ( https://github.com/rails/rails/blob/207fa5c11ddf1cfd696f0eeb07d6466aae9d451e/railties/lib/rails/app_rails_loader.rb#L6 )

Es de suponer que puede solucionar esto creando los rails archivos en su directorio de script (si no tiene un directorio de script , cree uno en la raíz de su aplicación):

#!/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''

Por supuesto, vale la pena preguntarse por qué no tiene este archivo en primer lugar. Podría valer la pena asegurarse de que sus rieles sean la versión que desea usar primero ( rails -v si la versión es más reciente, this publicación le mostrará cómo crear la nueva aplicación usando la versión anterior).


Posibles razones:

  • no estás en un directorio que contiene una aplicación completa de Rails
  • su directorio bin podría estar vacío, intente ejecutar rake rails:update:bin (para Rails 4) o rails app:update:bin (Rails 5)

Primero verifique con su ruta de ubicación y luego

bundle install

Si aún no funciona, ingrese

/bin/bash --login bundle install


Si utiliza rvm o rbenv por ejemplo, para mantener varias versiones de ruby, tal vez su versión de rails predeterminada para esa versión específica de ruby sea ​​diferente del proyecto que está intentando ejecutar y, por lo tanto, no puede detectar su aplicación.

Para asegurarse de que está utilizando la versión de rails correcta, puede comparar ambos resultados. Esto es lo que tengo:

$ rails -v Rails 3.1.0

a

$ bundle exec rails -v Rails 5.0.0.1

En este caso, puede mantener la versión de rails predeterminada y luego usar:

$ bundle exec rails server

O instala la rails gem específica para esa versión muy ruby con:

$ gem install rails -v 5.0.0.1 $ rails -v Rails 5.0.0.1

Y luego ponlo a trabajar con el comando menos detallado:

$ rails s

¡Espero que esto sea útil para otras personas en la misma situación!


Todas las respuestas anteriores no me ayudaron. Lo que resolvió mi problema para Rails 4 fue ejecutar el comando en el directorio raíz de mi aplicación:

rake rails:update:bin

Después de eso corriendo rails s estaba funcionando como se esperaba.


Tuve este problema, tardé unos minutos en darme cuenta de que había olvidado cambiar la versión activa de Ruby con chruby. Ruby diferente implicó una versión diferente de Rails, que buscaba el archivo relevante en otra carpeta.