ruby on rails - generate - Inicie otro servidor de Rails desde la aplicación Rails con patillas.
ruby on rails ejemplos (2)
¡Tienes razón, Mike!
Voy a decir simplemente configurar el puerto:
bundle exec rails s -p 3001
bundle exec rails s -p 3000
para dos instancias de servidor diferentes!
¡Aclamaciones!
Actualmente estoy trabajando en una aplicación de Rails que sirve como un actualizador para otra aplicación de Rails.
Tengo el proceso de actualización funcionando,
- Descargar nuevo lanzamiento zip
- Extraer a la ubicación correcta
- Sincronizar activos
- Paquete de instalación
- Precompilar los activos
- Inicie el servidor con - bundle exec rails server
Tengo un problema con el último paso.
Cuando corro:
Dir.chdir(''../other-project'')
`bundle exec rails server -d -p 3000`
de la aplicación de actualización parece estar extrayendo del paquete de actualizadores y no del nuevo paquete de aplicaciones del que debería extraerse.
El actualizador está escrito en Rails 4 y la aplicación que está actualizando es rails 3.
Cuando intento iniciar el servidor obtengo lo siguiente:
/home/vagrant/.rbenv/versions/2.0.0-p481/lib/ruby/gems/2.0.0/gems/railties-4.1.4/lib/rails/railtie/configuration.rb:95:in `method_missing'': undefined method `handlebars'' for #<Rails::Application::Configuration:0x007f9de18de100> (NoMethodError)
from /home/vagrant/apps/other-project/config/application.rb:22:in `<class:Application>''
from /home/vagrant/apps/other-project>''
from /home/vagrant/apps/other-project/config/application.rb:13:in `<top (required)>''
from /home/vagrant/.rbenv/versions/2.0.0-p481/lib/ruby/gems/2.0.0/gems/railties-4.1.4/lib/rails/commands/commands_tasks.rb:79:in `require''
from /home/vagrant/.rbenv/versions/2.0.0-p481/lib/ruby/gems/2.0.0/gems/railties-4.1.4/lib/rails/commands/commands_tasks.rb:79:in `block in server''
from /home/vagrant/.rbenv/versions/2.0.0-p481/lib/ruby/gems/2.0.0/gems/railties-4.1.4/lib/rails/commands/commands_tasks.rb:76:in `tap''
from /home/vagrant/.rbenv/versions/2.0.0-p481/lib/ruby/gems/2.0.0/gems/railties-4.1.4/lib/rails/commands/commands_tasks.rb:76:in `server''
from /home/vagrant/.rbenv/versions/2.0.0-p481/lib/ruby/gems/2.0.0/gems/railties-4.1.4/lib/rails/commands/commands_tasks.rb:40:in `run_command!''
from /home/vagrant/.rbenv/versions/2.0.0-p481/lib/ruby/gems/2.0.0/gems/railties-4.1.4/lib/rails/commands.rb:17:in `<top (required)>''
from script/rails:6:in `require''
from script/rails:6:in `<main>''
De esta salida puedo decir que está tratando de usar la versión incorrecta de las vulnerabilidades ...
Cuando manualmente cd ../other-project
y bundle exec rails server -d -p 3000
funciona bien.
¿Hay algún truco de bash que pueda usar para evitar esto? La caja base es Ubuntu 14.04
¡Gracias!
Muy bien, pasé la mañana solucionando problemas esto y encontré una solución!
Todo lo que tiene que hacer es establecer la variable de entorno BUNDLE_GEMFILE antes de:
bundle exec rails server -d -p 3000
Parece que Bundler necesita un poco de ayuda para encontrar los archivos Gemfile, ya que estoy tratando de iniciar otra aplicación dentro del paquete actual, esta es la clase que creé para controlar la aplicación que este actualizador será responsable de actualizar.
¡Estoy feliz de decir que el método de inicio finalmente funciona como se esperaba!
class AppController
@dir = Rails.root.join(''../'', ''Other-app/'')
def self.running?
File.exist?("#{@dir}/tmp/pids/server.pid")
end
def self.start
if running?
puts "app already running"
else
Dir.chdir(@dir)
puts "starting app..."
`BUNDLE_GEMFILE=Gemfile bundle exec rails server -d -p 3000`
puts "app started"
end
end
def self.kill
if not running?
puts "app already dead"
else
Dir.chdir(@dir)
puts "killing app..."
`kill $(cat tmp/pids/server.pid)`
puts "app dead"
end
end
def self.restart
if running?
kill
start
else
start
end
end
end