Estoy jugando con plantillas de rieles 2.3 y quiero poder usar el nombre de la aplicación como una variable dentro de mi plantilla, así que cuando utilizo ...
rails appname -m path/to/template.rb
... Quiero poder acceder a appname dentro de template.rb. Alguien sabe cómo hacer esto?
GraciasAccediendo al nombre de la aplicación desde dentro de una plantilla de rieles al generar la aplicación de rieles
Respuesta
Gracias por las respuestas. Mike Woodhouse, estabas tan cerca. Resulta que todo lo que tiene que hacer para acceder a la nombreaplic desde el interior de su plantilla de rieles es ...
@root.split('/').last
La variable @root es lo primero que se crea cuando la inicialización de las plantillas y está disponible dentro de las plantillas de los carriles. RAILS_ROOT no funciona.
RAILS_ROOT le dará la ruta absoluta a su directorio raíz. El nombre de su aplicación será la parte de la cadena después del '/' final que puede tomar de muchas maneras.
EDITAR: No es suficiente para hacer el trabajo. Mike y Dan lo arreglan a continuación.
Probablemente hay una manera más sencilla, pero esto parece que funciona:
RAILS_ROOT.split('/').last
EDIT: Bleah - esto que votó en contra de una vez, y el votante tenía razón. Si hubiera leído la pregunta con más cuidado, habría notado los elementos 2.3 y template.rb. Disculpas
Sospecho que RAILS_ROOT no se habrá creado en el momento en que necesite el nombre de la aplicación. En cuanto a ruby\lib\ruby\gems\1.8\gems\rails-2.2.2\bin\rails
, sin embargo, casi la primera cosa que sucede es lo siguiente:
app_path = ARGV.first
Se usa al final de la secuencia de comandos para permitir que un chdir y congelar para hacerse si es necesario - No sabía que podía INSTA - congelarme en la creación, así que aprendí algo nuevo al menos. ARGV
continuación, se acostumbra aquí:
Rails::Generator::Scripts::Generate.new.run(ARGV, :generator => 'app')
que rápidamente nos lleva al lugar donde ARGV es realmente maneja:
rails-2.3.1\lib\rails_generator\scripts.rb
donde veo
Rails::Generator::Base.instance(options[:generator], args, options).command(options[:command]).invoke!
En algún lugar por debajo de aquí es, probablemente, donde el la plantilla se maneja. Me temo que estoy en una etapa muy temprana con 2.3 y la creación de plantillas es un área que aún no he estudiado.
¿Eso ayuda mucho mejor que mi primer esfuerzo?
Creo que la forma preferida ahora es llamar a Rails.root y ya no RAILS_ROOT. Al parecer, alguien en los raíles del planeta tiene una aversión a la mayúscula o alguna razón importante similar. Desde 2.3.5 ambos parecen funcionar.
Estaba buscando una respuesta a esta pregunta. desafortunadamente, la respuesta anterior (@root) no parece funcionar en Rails 3.
He aquí las variables se puede acceder en Rails 3 plantillas de aplicaciones (incluso más fácil):
@app_name
@app_path
En Rails 3, utilice el atributo app_name
.
Consulte la documentación del Rails::Generators::AppGenerator.
que estaba recibiendo el error
`template': undefined local variable or method `app_name'
rubí 1.9.2p290, rieles 3.2.11, thor 0.18.0, Windows
pero con carriles de 2,3 generador:
class DynanavGenerator < Rails::Generators::Base
(puedo 's asegúrese de que este error ocurrió en los carriles 3.0.9 o anterior) definición de clase cambiada para ser:
class DynanavGenerator < Rails::Generators::NamedBase
que luego dio:
Ningún valor previsto argumentos necesarios 'nombre'
Luego añade un 'nombre' ("algo" más adelante):
rails generate dynanav something --force
que dio el error original, entonces agregué:
def app_name
@name.titleize
end
a la clase y todo estaba bien.
me encontré con un problema similar, ninguna de las variables mencionadas anteriormente estaban disponibles para mí en los carriles 4. He descubierto que @name
estaba disponible mientras se ejecuta
rails plugin new engines/dummy -m my_template.rb
Hay otras variables útiles disponibles desde dentro de la plantilla . Puede verlo usted mismo y jugar usando pry
. Dentro de mi plantilla añadí
require 'pry'; binding.pry
y luego corrió ls
para mostrar una lista de las variables de instancia disponibles
ls -i
instance variables:
@_initializer @app_path @behavior @destination_stack @extra_entries @name @output_buffer @shell
@_invocations @args @builder @dummy_path @gem_filter @options @rails_template @source_paths
@after_bundle_callbacks @author @camelized @email @in_group @original_name @shebang
- 1. Importación de una aplicación de rieles existente al proyecto RubyMine
- 2. Rieles: accediendo al valor de campo del método modelo
- 3. Enviar datos desde la aplicación de rieles a los clientes
- 4. ¿Cuál es la mejor forma de generar Microsoft OOXML (docx) desde una aplicación de rieles?
- 5. establecer la aplicación de charset en rieles
- 6. ¿Cómo puedo definir la altura de la línea con Gamba al generar una aplicación de PDF en rieles?
- 7. creando Rdoc para una aplicación de rieles
- 8. Necesito una ruta completa de gems desde dentro de una aplicación de rieles
- 9. Plantillas de aplicación de rieles
- 10. Funcionamiento de la aplicación de rieles simples en heroku
- 11. ¿La mejor manera de versionar una aplicación de rieles?
- 12. ¿Cómo documentar una aplicación de rieles?
- 13. Recarga parcial en una aplicación de rieles
- 14. Aplicación de Mount Sinatra dentro de una aplicación de rieles y diseño compartido
- 15. Salida de jSON en una aplicación de rieles
- 16. ¿Cómo desactivo la protección CSRF en una aplicación de rieles?
- 17. Cómo acceder al módulo auxiliar de URL desde los rieles
- 18. ¿Cómo ejecuto tareas rastrillo dentro de mi aplicación rieles
- 19. ¿Error al generar la aplicación OS X de 32 bits?
- 20. Problema representación parcial en el diseño de la aplicación (rieles)
- 21. ¿Dónde debería colocar mi propio "módulo" dentro de la aplicación de rieles?
- 22. Motor de rieles: renderizar el diseño de la aplicación primaria
- 23. Error al usar mongrel 1.2.0.pre2 en la aplicación de rieles 3 en heroku
- 24. Agregar la aplicación icono a rieles
- 25. ¿Es posible usar rieles image_tag desde dentro de un modelo?
- 26. Error al instalar rieles
- 27. Cómo embellecer el código xml en la aplicación de rieles
- 28. configuración del nombre de archivo para un archivo descargado en una aplicación de rieles
- 29. Android: accediendo al micrófono de forma simultánea (aplicación propia RecognizerIntent +)
- 30. Aplicación Desplegar rieles en Bluehost
Esta respuesta es tiempo de la prueba, debe ser el de arriba –