Necesito saber el nombre de una aplicación de programadores desde un motor Rails 3.¿Cómo accedo al nombre del objeto de aplicación Rails 3?
Respuesta
En Rails 3, a la aplicación que se genera se le asigna un espacio de nombres de módulo que coincide con el nombre de la aplicación. Entonces, si su aplicación se llamaba "Twitter", la clase de Rails.application es "Twitter :: Application".
Esto significa que se puede dividir la cadena del nombre de la clase de su aplicación Rails para obtener un nombre de aplicación como esta:
Rails.application.class.to_s.split("::").first
En nuestro ejemplo, la cadena resultante sería "Twitter".
¿Hay algo similar que pueda usarse en los rieles 2.3? – nzifnab
este es el nombre de la clase, y no el nombre de la aplicación como se comprueba en – Tilo
@tilo Es cierto, excepto que el 97% de los casos, esto es suficiente para la mayoría de las personas que llaman a su aplicación cuidadosamente – Scott
Rails.application
devuelve su clase MyApp::Application
.
Utilizar el servicio de Scott, pongo el siguiente en mi archivo app/controllers/application_controller.rb
class ApplicationController < ActionController::Base
protect_from_forgery
helper_method :app_name
private
def app_name
Rails.application.class.to_s.split("::").first
end
Luego, en mis plantillas que sólo puede hacer #{app_name}
donde se necesite, lo que hace que sea mucho menos de una molestia si necesita cambiar el nombre aplicación (que tuve que hacer esta mañana).
El cartel original pidió el nombre de la aplicación rieles, no por el nombre de la clase. Esas son dos cosas diferentes. p.ej. la ortografía de la aplicación Rails puede ser diferente de lo que Rails espera, p. 'test-app' en lugar de 'test_app'.
Es difícil llegar al nombre de la aplicación Rails, deletreó el camino ya que se registró, porque ese nombre no se conserva. Solo las opciones para session_store parecen contener la cadena original ligeramente modificada.
La mejor manera de llegar al nombre de la aplicación Rails es:
Esto funcionará incluso si el directorio de aplicación fue renombrado o ligado sym-!
Rails.application.config.session_options[:key].sub(/^_/,'').sub(/_session/,'')
=> "test-app"
¿Por qué? Debido a que el autor de la aplicación podría haber escrito que es el nombre de manera diferente a lo que Rails espera ... p. con '-' caracteres en lugar de '_'; p.ej. "prueba-aplicación". Del nombre de la clase no puede garantizar que llegue a la ortografía correcta.
Utilizando esta información, usted puede hacer esto:
class << Rails.application
def name
Rails.application.config.session_options[:key].sub(/^_/,'').sub(/_session/,'')
end
end
Rails.application.name
=> 'test-app'
o simplemente agregar esto a su ./config/environment.rb
:
APP_VERSION = '1.0.0'
APP_NAME = Rails.application.config.session_options[:key].sub(/^_/,'').sub(/_session/,'')
que hace que estas constantes disponibles en el nivel superior de la aplicación.
Cerca, pero no puro:
Esto es casi correcta, pero aún así se producirá un error si el directorio de la aplicación se cambió el nombre (por ejemplo, durante el despliegue a ' '20121001_110512' o 'último' .. .entonces el siguiente rompería:
File.basename(Rails.root.to_s)
=> "test-app"
con los dos enfoques siguientes no se puede llegar a la ortografía correcta .. sólo se podía adivinar un nombre:
Esta es sub-óptimo, y puede dar resultados mal escritas:
se puede llegar a un derivado del nombre de la aplicación como esta:
Rails.application.engine_name.gsub(/_application/,'')
=> "test_app"
Pero tenga en cuenta que esto no es infalible, porque alguien podría haber llamado a la aplicación "prueba-aplicación" y verá el resultado anterior, no el nombre correcto con '-'.
Lo mismo es cierto si usted deriva de esta manera:
Rails.application.class.parent_name
=> "TestApp"
este es el nombre de la clase, pero no se puede estar seguro de cómo llegar al nombre de la forma en que el autor lo explicó.
Creo que debería ser 'Rails.application.class.parent_name' en la última sección pero no puedo editarlo porque mi cambio es de menos de 6 caracteres. Gracias StackOverflow. –
¡gracias por señalar eso! Lo arreglé. – Tilo
Esta es la respuesta correcta de Rails-y. También me gustaría señalar que la mayoría de los usuarios querrían llamar a .humanize.titleize para usarlo en una vista. – Sam
Usted puede encontrar esto en el archivo config.ru:
run Dinosaur::Application
o en el Rakefile:
Dinosaur::Application.load_tasks
El nombre antes de la "::" es el nombre de la aplicación
para una versión más "humanizado" (basado en la primera respuesta se puede encontrar aquí) consideran el siguiente método: se volverá Test App
para su aplicación TestApp
.
def app_name
Rails.application.class.parent_name
.underscore
.humanize
.split
.map(&:capitalize)
.join(' ')
end
- 1. ¿Cómo accedo al objeto Request desde RazorViewEngine?
- 2. problema al crear Rails 3 del motor
- 3. Rails 3 ruta anexa _index al nombre de ruta
- 4. Rails 3 plantillas de aplicación
- 5. ¿Cómo accedo a esta propiedad del objeto con un nombre con guión?
- 6. Rails 3 URL sin nombre de controlador
- 7. nombre del modelo al nombre del controlador
- 8. Aplicación de ejemplo para Rails 3?
- 9. Ruby on Rails - atributos anidados: ¿Cómo accedo al modelo padre del niño modelo
- 10. Cargando partes de una aplicación Rails 3
- 11. Rails 3 - subir archivos al directorio público
- 12. ¿Cómo accedo al equipo host desde la máquina invitada?
- 13. Rails 3/PhoneGap: ¿Cómo convertir una aplicación de Rails en una aplicación de iOS Phonegap?
- 14. Rails 3 - Buscar por nombre en lugar de id
- 15. Rails 3 - ActiveAdmin - Visualización del objeto ActiveRecord en lugar de texto
- 16. ¿Cómo depuro una aplicación de Rails en Aptana Studio 3?
- 17. ¿Cómo congelo gemas en una aplicación de Rails 3?
- 18. Rails 3: ¿Cómo funciona "accepts_nested_attributes_for"?
- 19. ¿Cuándo actualizarás tu aplicación a Rails 3?
- 20. ¿Buena aplicación base para Rails 3?
- 21. Dónde/cómo codificar Constantes en Rails 3 Aplicación
- 22. ¿Cómo convierto una aplicación Rails 3 existente en un motor?
- 23. Rails 3 protect_from_forgery problems
- 24. ¿Cómo enrutas una acción al controlador de la aplicación en Rails 3?
- 25. ¿Registrador personalizado en Rails 3?
- 26. ¿Cómo accedo al objeto de solicitud en un plugin de Django-CMS?
- 27. traer objeto al flash frontal actionscript 3
- 28. aplicación Rails 3, cómo medir la estabilidad bajo altas cargas
- 29. Enrutamiento específico del entorno en Rails 3
- 30. Ruby on Rails 3: Transmisión de datos a través de Rails al cliente
¿desea acceder al nombre de la aplicación cómo lo creó cuando hizo una "nueva aplicación de rails", o simplemente el nombre de la clase? – Tilo