tutorial rails que ejemplos descargar curso aprender and ruby-on-rails-3

ruby on rails 3 - rails - Pase el archivo de script de ruby a la consola de rieles



ruby on rails que es (7)

Aquí está el truco que estoy usando:

rr() { rails_root="$(bundle exec rails runner "puts Rails.root")" rp="$(relpath "$1" "$rails_root")" bundle exec rails runner "eval(File.read ''$rp'')" } relpath() {python -c "import os.path; print os.path.relpath(''$1'',''${2:-$PWD}'')";}

Ejemplo:

cd ~/rails_project/app/helpers rr my_script.rb

Basado en la respuesta de @moritz aquí. Lo cambié, ya que el directorio de trabajo para File.read es la raíz del proyecto Rails.

Sé que esto es una herejía grave, el uso de Python para ayudar a un guión de rubí. Pero no pude encontrar un método relpath integrado en ruby.

Crédito: relpath() fue tomado de @MestreLion, convierte la ruta absoluta en una ruta relativa dado un directorio actual usando Bash

¿Hay alguna manera de pasar el archivo ruby, foo.rb a la consola de rieles? Los resultados esperados serían después de que la consola inicie el entorno de rieles para ejecutar el archivo.

O de cualquier otra manera que me permita ejecutar el archivo en el entorno de los rieles, desencadenado desde el símbolo del sistema.


Considera crear una tarea de rake.

Para el código que necesito para crear registros o para admitir migraciones, por ejemplo, a menudo creo una tarea de rake como esa a partir de esta respuesta . Por ejemplo:

En lib/tasks/example.rake :

namespace :example do desc "Sample description you''d see if you ran: ''rake --tasks'' in the terminal" task create_user: :environment do User.create! first_name: "Foo", last_name: "Bar" end

Y luego en la carrera terminal:

rake example:create_user


De estos enfoques mencionados anteriormente, ninguno parecía limpio e ideal, como es de esperar que se ejecute un script independiente (no se evalúa o canaliza a través de <redirección), pero finalmente esto funciona perfecto para mí:

(para Rails 3)

Insertar en la parte superior de su secuencia de comandos:

#!/usr/bin/env ruby APP_PATH = File.expand_path(appdir = ''/srv/staging/strat/fundmgr/config/application'', __FILE__) require File.expand_path(appdir + ''/../boot'', __FILE__) require APP_PATH # set Rails.env here if desired Rails.application.require_environment! # your code here...

Por supuesto, configure su propia ruta de la aplicación Rails en la línea APP_PATH.

De esta forma, puedo evitar tener que ingresar cualquier irb o rails c interactivo y puedo probar mi script.rb desde el intérprete de comandos del shell, antes p. Ej. programando en crontab.

También admite parámetros de línea de comandos y minimiza los niveles de envoltorios antes de llegar a tu código.

CRÉDITO (también muestra un ejemplo de Rails 2)

http://zerowidth.com/2011/03/18/standalone-script-runner-bin-scripts-in-rails.html


Mientras tanto, esta solución ha sido respaldada.

rails r PATH_TO_RUBY_FILE

Mucho más simple ahora.


Puedes usar

bundle exec rails runner "eval(File.read ''your_script.rb'')"

ACTUALIZAR:

Lo que también hemos estado utilizando mucho últimamente es cargar el entorno de los rieles desde el propio guión. Considera doit.rb :

#!/usr/bin/env ruby require "/path/to/rails_app/config/environment" # ... do your stuff


En realidad, la forma más simple es ejecutarlo con load dentro de la rails console

load ''./path/to/foo.rb''


script/console --irb=pry < test.rb > test.log

simple, sucio y bloquea el proceso al final, pero hace el trabajo exactamente como yo quería.