Globalizando Mephisto
Esta es la primera parte de una serie de cuatro artículos sobre como Globalizar tu aplicación Mephisto.
- 1ª Parte – Instalación y uso para un mephisto mono sitio
- 2ª Parte – Despliegue y temas de producción
- 3ª Parte – Instalación y uso para un mephisto multi sitio
- 4ª Parte – Utilizando parámetro del path para definir el locale
En esto articulo, espero ayudarles a instalar con exito el plugin mephisto_i18n.
En el siguiente articulo hablaré de como configurar tu servidor web correctamente y otros temas relacionados al plugin.
Antecedentes
De los requerimientos del cliente, sabíamos que nuestro ultimo proyecto tenia que tener una herramienta de cms decente. Como lo queríamos hacer con rails, buscamos y después de investigar varias posibilidades decantamos por Mephisto.
Pero, otro requerimiento importante era que el sitio estuviese disponible en múltiples idiomas (por lo menos castellano, catalán, inglés y francés). También, sabíamos que en realidad solo teníamos una opción real, el plugin Globalize.
Así que comencé a “Globalizar” Mephisto.
Globalizando Mephisto
Como Mephisto todavía esta en beta (aunque actualmente es estable para uso en producción) no querría modificar el código de mephisto directamente, así que empecé a escribir un plugin para rails que modificaría mephisto para añadir soporte para globalize.
Decidimos utilizar subdominios para indicar el locale activo de la aplicación, mayoritariamente porque era mas fácil. Si no fuera así, tendría que añadir un parámetro del locale por todos lados en el código mephisto (Lea esto para ver que en realidad esto no fue tan terriblemente dificil ).
Así que decidí crear un sistema donde:
example.com/ www.example.com => locale base es activo
es.example.com => locale es (castellano) es activo
fr.example.com => locale fr (francés) es activo
i.e. Varios hosts virtuales, cada cual tendría su propia raiz:
RAILS_ROOT/public => raíz para el locale base
RAILS_ROOT/public/es => raíz para el locale es
RAILS_ROOT/public/fr => raíz para el locale fr
Con la versión de Globalize en ese momento siendo la 1.1, era bastante difícil, principalmente por las limitaciones de select/include que tenía el mecanismo de almacenaje externo de Globalize. Con el paso del tiempo fue progresivamente mas y mas difícil sobrescribir el código de mephisto con las limitaciones de globalize sin tocar el código mismo de mephisto (lo cual era mi objetivo).
La historia ahora se bifurca con la creación del mecanismo de almacenaje interno de Globalize que está bien descrito aquí así que no entraré en mas detalle, solo diré que con esta nueva nueva modalidad de almacenar traducciones, de repente era mucho mas fácil globalizar los modelos de mephisto y rápidamente conseguí que todas las pruebas estaban aprobando.
Luego tuve que encargarme de cosas como caching y sweeping para múltiples raizes, vínculos permanentes u otras cositas.
Para nuestra aplicación, también creé un par de plugins mas para añadir funcionalidad adicional especifico a nuestra aplicación pero para las necesidades de este articulo ya es bastante historia por ahora.
Desde entonces limpié bastante el plugin, añadí “rake tasks” para simplificar la operación de migrar al sistema globalizado y integré una cantidad de funcionalidades adicionales de código especifico de nuestro aplicación.
Así que deja que os explique que es necesario para migrar tu instalación de mephisto a una instancia de Mephisto completamente internacionalizado.
Por casualidad, también querría hacer lo mismo para mi blog personal así que os explicaré paso por paso lo que hice para migrar mi propio site.
Migrando http://saimonmoore.net; paso por paso
Así que mi sitio actual esta ejecutando una instancia básica de Mephisto (Rev:2812).
Nota: Este plugin solamente ha sido probado con Rails 1.2.x pero hay cambios en trunk (.e.g multiple controller view paths) que simplificarán este plugin bastante pero todavía no he tenido tiempo probarlo con trunk.
Seguimos…
Empezamos por instalar Globalize versión for-1.2
Instalando el plugin Globalize
Abre un terminal y escribe:
$script/plugin install -x http://svn.globalize-rails.org/svn/globalize/branches/for-1.2
A /home/saimon/dev/projects/saimonmoore.net/vendor/plugins/for-1.2/test
A /home/saimon/dev/projects/saimonmoore.net/vendor/plugins/for-1.2/test/unit
A /home/saimon/dev/projects/saimonmoore.net/vendor/plugins/for-1.2/test/view_picking_test.rb
A /home/saimon/dev/projects/saimonmoore.net/vendor/plugins/for-1.2/test/render_test.rb
...
Obtained revision: 91
(in /home/saimon/dev/projects/saimonmoore.net)
Globalize has not been setup yet. Generate a migration via script/generate globalize or run rake globalize:setup
Toma nota que la instalación de globalize ha detectado que las tablas y datos de globalize todavía no se han instalado y sugiere un par de maneras para que los insertes en tu bb.dd.
Antes de instalar las tables de globalize voy a renombrar el plugin a globalize ya que se guradó como for-1.2
$svn pe svn:externals vendor/plugins/
globalize http://svn.globalize-rails.org/svn/globalize/branches/for-1.2
$svn up
Obtaining external item in 'vendor/plugins/globalize'
A vendor/plugins/globalize/test
A vendor/plugins/globalize/test/unit
...
$rm -fR vendor/plugins/for-1.2
$svn ci vendor/plugins
Comprobamos que globalize ha sido instalado correctamente. Tendríamos que ver los rake tasks de globalize:
$rake -T | grep globalize
rake globalize:create_tables # Crear las tablas de Globalize en el bb.dd
rake globalize:drop_tables # Elimina las tablas de Globalize
rake globalize:load_locale_data # Cargar los datos de los locales
rake globalize:purge_locale_data # Eliminar los datos de los locales
rake globalize:reset # Resetear los datos de Globalize en el bb.dd
# Crear las tablas de Globalize en el bb.dd y cargar los datos de los locales
rake globalize:setup
rake globalize:teardown # Eliminar todos las tablas/datos de Globalize
rake globalize:test # Ejecutar pruebas
rake globalize:upgrade_schema_to_1_dot_2 # Actualizar el esquema a Globalize 1.2
De momento pinta bien…
Así que vamos a crear y cargar las tablas de globalize:
$rake globalize:setup
(in /home/saimon/dev/projects/saimonmoore.net)
NOTICE: CREATE TABLE crear una secuencia implÃcita `globalize_countries_id_seq` para la columna serial `globalize_countries.id`
NOTICE: CREATE TABLE / PRIMARY KEY crear el Ãndice implÃcito `globalize_countries_pkey` para la tabla `globalize_countries`
NOTICE: CREATE TABLE crear una secuencia implÃcita `globalize_translations_id_seq` para la columna serial `globalize_translations.id`
NOTICE: CREATE TABLE / PRIMARY KEY crear el Ãndice implÃcito `globalize_translations_pkey` para la tabla `globalize_translations`
NOTICE: CREATE TABLE crear una secuencia implÃcita `globalize_languages_id_seq` para la columna serial `globalize_languages.id`
NOTICE: CREATE TABLE / PRIMARY KEY crear el Ãndice implÃcito `globalize_languages_pkey` para la tabla `globalize_languages`
También voy a actualizar el fichero db/schema.rb:
$rake db:schema:dump
Bueno, ya está el globalize instalado. Seguimos con el siguiente paso que es instalar el plugin mephisto_i18n.
Instalando el plugin Mephisto_I18n
$script/plugin install -x svn://rubyforge.org/var/svn/sidirodromos/plugins/mephisto_i18n/trunk
A /home/saimon/dev/projects/saimonmoore.net/vendor/plugins/mephisto_i18n/test
A /home/saimon/dev/projects/saimonmoore.net/vendor/plugins/mephisto_i18n/test/unit
A /home/saimon/dev/projects/saimonmoore.net/vendor/plugins/mephisto_i18n/test/unit/asset_test.rb
...
El gancho de instalación del plugin imprime el fichero INSTALL del plugin para que podamos ver inmediatamente cuales son los siguientes pasos.
Antes de continuar vamos a echar un vistazo a los “rake tasks” disponibles:
$rake -T | grep 18
rake mephisto:i18n:bootstrap # Bootstrap traducciones
# Modificar el orden de config.plugins en environment.rb para añadir este plugin ultimo
rake mephisto:i18n:set_plugin_order
# Modificar los recursos de mephisto como es necesario para el UI de i18n
rake mephisto:i18n:ui:modify_mephisto_resources
rake mephisto:i18n:ui:rename_index_file # Renombrar el fichero public/index.html
# Renombrar el fichero public/index.html renombrado por mephisto:i18n:ui:rename_index_file
rake mephisto:i18n:ui:restore_index_file
# Restaurar los recursos mephisto modificados por mephisto:i18n:ui:modify_mephisto_resources
rake mephisto:i18n:ui:restore_mephisto_resources
rake mephisto:i18n:ui:setup # Configurar los recursos del plugin i18n
# Crear los subraices segun los locales actualmente soportados
rake mephisto:i18n:ui:setup_subroots
# Deshacer los cambios causados por mephisto::i18n:ui:setup
rake mephisto:i18n:ui:teardown
# Eliminar los sub raices creados por mephisto:i18n:ui:setup_subroots
rake mephisto:i18n:ui:teardown_subroots
Como puedes ver hay bastantes tareas (de rake) para ayudar con el proceso de instalación.
Configurando tu aplicación para mephisto_i18n.
Pues ya hemos instalado globalize y creado sus tablas, así que continuamos con la instalación con el siguiente paso, el cual es:
"Configurar el orden de los plugins dentro del fichero environment.rb".
$cat config/environment.rb | grep config.plugins
# config.plugins= %W( exception_notification ssl_requirement )
$rake mephisto:i18n:set_plugin_order
$cat config/environment.rb | grep config.plugins
config.plugins= %W(a_gems acts_as_paranoid acts_as_versioned attachment_fu dialog_helper filtered_column filtered_column_code_macro filtered_column_flickr_macro globalize labeled_form_helper liquid manage_fixtures mephisto mephisto_converters mocha permalink_fu request_routing simply_bdd simply_helpful white_list mephisto_i18n)
La tarea “mephisto:i18n:set_plugin_order” ha modificaod el fichero config/environment.rb para asegurar que el plugin mephisto_i18n sea cargado depues del resto de plugins sean cargados.
Para conseguirlo crea una lista de los plugins existentes en el directorio de plugins, lo ordena y añade el plugin mephisto_i18n al final.
No te preocupes si ya tienes modificado la opción config.plugins, la tarea no eliminará el orden actual de tus plugins, pero comprobará la existencia del plugin mephisto_i18n y lo añadirá al final.
¡ATENCION!: Esta tarea asume que estás ejecutando mephisto trunk así que espera que existe la propiedad config.plugins (comentado o sin comentar)
El proximo paso segun el documento de INSTALL:
“Definir tu locale base y los locales soportados”
Quiero tener mi blog disponible en Inglés, Castellano, Catalán y Griego, con Ingles como el locale base.
Así que editamos el fichero config/environment.rb para que parezca algo como:
$tail -n3 config/environment.rb
include Globalize
SupportedLocales.define(['gr-GR', 'es-ES', 'ca-ES'],'en-UK')
Ya estamos listos a globalizar las tablas de mephisto.
“Globalizando las tablas de Mephisto”
Solo ejecuta:
$script/runner 'Mephisto::Plugins::MephistoI18n.install'
./script/../config/../vendor/plugins/mephisto_i18n/lib/globalize/supported_locales.rb:291:in `setup': Language for code: gr-GR doesn't exist! Check globalize tables. (RuntimeError) from ./script/../config/../vendor/plugins/mephisto_i18n/lib/globalize/supported_locales.rb:289:in `collect'
from ./script/../config/../vendor/plugins/mephisto_i18n/lib/globalize/supported_locales.rb:289:in `setup'
from ./script/../config/../vendor/plugins/mephisto_i18n/lib/globalize/supported_locales.rb:68:in `initialize'
from ./script/../config/../vendor/plugins/mephisto_i18n/lib/globalize/supported_locales.rb:44:in `new'
from ./script/../config/../vendor/plugins/mephisto_i18n/lib/globalize/supported_locales.rb:44:in `define'
from ./script/../config/../config/environment.rb:95
from /usr/lib/ruby/site_ruby/1.8/rubygems/custom_require.rb:27:in `gem_original_require'
from /usr/lib/ruby/site_ruby/1.8/rubygems/custom_require.rb:27:in `require'
from /usr/lib/ruby/gems/1.8/gems/rails-1.2.2/lib/commands/runner.rb:39
from /usr/lib/ruby/site_ruby/1.8/rubygems/custom_require.rb:27:in `gem_original_require'
from /usr/lib/ruby/site_ruby/1.8/rubygems/custom_require.rb:27:in `require'
from script/runner:3
oh oh que sucedió? Aha, ya veo el problema. ‘gr’ no es un código de idioma valido. El valor correcto es ‘el’ para el griego. Un arreglo rápido y …
$tail -n3 config/environment.rb
include Globalize
SupportedLocales.define(['el-GR', 'es-ES', 'ca-ES'],'en-UK')
$script/runner 'Mephisto::Plugins::MephistoI18n.install'
Run 'script/runner -h' for help.
Hmm…. eso tampoco funcionó?. Si a ti también te sucede, eso es solamente un error tipográfico en el documento de INSTALL que ya ha sido corregido.
El comando correcto es:
$script/runner 'Mephisto::Plugins::I18n.install'
Adding globalize columns
-- add_column(:assets, "title_el", :string)
-> 0.1035s
-- add_column(:contents, "title_el", :string)
-> 0.0166s
-- add_column(:contents, "excerpt_el", :text)
-> 0.0284s
-- add_column(:contents, "body_el", :text)
-> 0.0164s
....
Puedes deshacer estos cambios en cualquier momento a través de:
$script/runner 'Mephisto::Plugins::I18n.uninstall'
-- remove_column(:assets, "title_el")
-> 0.3864s
-- remove_column(:contents, "title_el")
-> 0.0209s
-- remove_column(:contents, "excerpt_el")
...
Guardamos estos cambios al fichero db/schema.rb:
$rake db:schema:dump
Echa un vistazo al fichero db/schema.rb para ver los cambios que el plugin ha hecho a las tablas de mephisto.
Finalmente, la ultima parte de la instalación tiene que ver con la configuración de los diferentes raices para cada uno de los hosts virtuales (cada uno representando uno de los locales no-base).
“Configurando los recursos de Mephisto I18n”
Menos mal que tenemos otra tarea rake para hacérnoslo fácilmente:
Os mostraré que cambios ha hecho la tarea mostrando el antes y después de algunos directorios:
$ls -la public/
total 33
drwxr-xr-x 8 saimon users 488 mar 19 13:26 .
drwxr-xr-x 15 saimon users 520 mar 19 16:19 ..
-rw-r--r-- 1 saimon users 619 sep 11 2006 404.html
-rw-r--r-- 1 saimon users 684 sep 11 2006 500.html
drwxr-xr-x 4 saimon users 96 mar 19 13:43 assets
-rwxr-xr-x 1 saimon users 479 dic 29 2005 dispatch.cgi
-rwxr-xr-x 1 saimon users 859 jun 14 2006 dispatch.fcgi
-rwxr-xr-x 1 saimon users 479 dic 29 2005 dispatch.rb
drwxr-xr-x 5 saimon users 120 nov 6 15:08 documents
-rw-r--r-- 1 saimon users 0 dic 29 2005 favicon.ico
drwxr-xr-x 4 saimon users 96 oct 11 09:27 images
-rw-r--r-- 1 saimon users 3325 nov 4 18:06 install.html
drwxr-xr-x 4 saimon users 96 oct 11 09:27 javascripts
-rw-r--r-- 1 saimon users 99 dic 29 2005 robots.txt
-rw-r--r-- 1 saimon users 631 nov 9 14:56 sitemap.txt
drwxr-xr-x 4 saimon users 96 oct 11 09:27 stylesheets
drwxr-xr-x 7 saimon users 296 mar 19 16:19 .svn
$rake mephisto:i18n:ui:setup
$ls -la public
total 33
drwxr-xr-x 11 saimon users 560 mar 19 16:54 .
drwxr-xr-x 15 saimon users 520 mar 19 16:19 ..
-rw-r--r-- 1 saimon users 619 sep 11 2006 404.html
-rw-r--r-- 1 saimon users 684 sep 11 2006 500.html
drwxr-xr-x 4 saimon users 96 mar 19 13:43 assets
drwxr-xr-x 2 saimon users 280 mar 19 16:54 ca
-rwxr-xr-x 1 saimon users 479 dic 29 2005 dispatch.cgi
-rwxr-xr-x 1 saimon users 859 jun 14 2006 dispatch.fcgi
-rwxr-xr-x 1 saimon users 479 dic 29 2005 dispatch.rb
drwxr-xr-x 5 saimon users 120 nov 6 15:08 documents
drwxr-xr-x 2 saimon users 280 mar 19 16:54 el
drwxr-xr-x 2 saimon users 280 mar 19 16:54 es
-rw-r--r-- 1 saimon users 0 dic 29 2005 favicon.ico
drwxr-xr-x 4 saimon users 96 oct 11 09:27 images
-rw-r--r-- 1 saimon users 3325 nov 4 18:06 install.html
drwxr-xr-x 4 saimon users 96 oct 11 09:27 javascripts
-rw-r--r-- 1 saimon users 99 dic 29 2005 robots.txt
-rw-r--r-- 1 saimon users 631 nov 9 14:56 sitemap.txt
drwxr-xr-x 4 saimon users 96 oct 11 09:27 stylesheets
drwxr-xr-x 7 saimon users 296 mar 19 16:19 .svn
$ls -la public/es/
total 1
drwxr-xr-x 2 saimon users 280 mar 19 16:54 .
drwxr-xr-x 11 saimon users 560 mar 19 16:54 ..
lrwxrwxrwx 1 saimon users 67 mar 19 16:54 404.html-> /home/saimon/dev/projects/saimonmoore.net/config/../public/404.html
lrwxrwxrwx 1 saimon users 67 mar 19 16:54 500.html-> /home/saimon/dev/projects/saimonmoore.net/config/../public/500.html
lrwxrwxrwx 1 saimon users 70 mar 19 16:54 favicon.ico-> /home/saimon/dev/projects/saimonmoore.net/config/../public/favicon.ico
lrwxrwxrwx 1 saimon users 65 mar 19 16:54 images-> /home/saimon/dev/projects/saimonmoore.net/config/../public/images
lrwxrwxrwx 1 saimon users 71 mar 19 16:54 install.html-> /home/saimon/dev/projects/saimonmoore.net/config/../public/install.html
lrwxrwxrwx 1 saimon users 70 mar 19 16:54 javascripts-> /home/saimon/dev/projects/saimonmoore.net/config/../public/javascripts
lrwxrwxrwx 1 saimon users 69 mar 19 16:54 robots.txt-> /home/saimon/dev/projects/saimonmoore.net/config/../public/robots.txt
lrwxrwxrwx 1 saimon users 70 mar 19 16:54 stylesheets-> /home/saimon/dev/projects/saimonmoore.net/config/../public/stylesheets
$ls -la app/views/layouts/
total 8
drwxr-xr-x 3 saimon users 192 mar 19 16:54 .
drwxr-xr-x 11 saimon users 320 mar 19 16:54 ..
-rw-r--r-- 1 saimon users 3683 feb 19 14:52 application.original.rhtml
lrwxrwxrwx 1 saimon users 125 mar 19 16:54 application.rhtml-> /home/saimon/dev/projects/saimonmoore.net/config/../vendor/plugins/mephisto_i18n/tasks/../app/views/layouts/application.rhtml
-rw-r--r-- 1 saimon users 1367 nov 22 16:07 simple.rhtml
drwxr-xr-x 7 saimon users 296 mar 19 16:19 .svn
$ls -la app/views
total 1
drwxr-xr-x 11 saimon users 320 mar 19 16:54 .
drwxr-xr-x 11 saimon users 272 mar 18 20:02 ..
drwxr-xr-x 3 saimon users 136 mar 18 20:02 account
drwxr-xr-x 19 saimon users 488 mar 18 20:07 admin
drwxr-xr-x 3 saimon users 72 mar 18 20:02 assets
drwxr-xr-x 3 saimon users 72 mar 18 20:02 comments
drwxr-xr-x 3 saimon users 168 mar 18 20:02 feed
lrwxrwxrwx 1 saimon users 104 mar 19 16:54 i18n-> /home/saimon/dev/projects/saimonmoore.net/config/../vendor/plugins/mephisto_i18n/tasks/../app/views/i18n
drwxr-xr-x 3 saimon users 192 mar 19 16:54 layouts
drwxr-xr-x 3 saimon users 168 mar 18 20:02 mephisto
drwxr-xr-x 7 saimon users 296 mar 19 16:19 .svn
drwxr-xr-x 3 saimon users 112 mar 18 20:02 user_mailer
Como puedes ver ha hecho algunos cambios incluyendo:
- Crear tres subdirectorios adicionales en RAILS_ROOT/public, uno para cada locale no-base (Recuerda que la raiz del locale base es solo el RAILS_ROOT/public) y crea symlinks de ficheros comunes en RAILS_ROOT/public.
- Sobreescribe la plantilla de layout de admin, creando un symlink al fichero proporcionado por el plugin. (El original todavía está allí por si las moscas)
- Añadir un directorio ‘i18n’ adicional a la carpeta de views (symlink). Esto es para un controller customizado que se ocupa de cambiar el locale activo en el interfaz de administración.
Si decides que en realidad no querrias instalar este plugin y quieres deshacer todos los cambios entonces solo has de ejecutar:
rake mephisto:i18n:ui:teardown
Esto devolverá todos tus ficheros y carpetas originales a su lugar correspondiente.
“Modificar el dominio de la sesión”
Finalmente, el ultimo paso en el documento INCLUDE avisa que tenemos que modificar la opción ession_domain en ActionController::CgiRequest::DEFAULT_SESSION_OPTIONS para que cuando cambiamos entre subdominios en la misma sesión, la sesión no se pierda.
$tail -n1 config/environments/development.rb
ActionController::CgiRequest::DEFAULT_SESSION_OPTIONS.update(:session_domain => '.saimonmoore.net')
$tail -n1 config/environments/production.rb
ActionController::CgiRequest::DEFAULT_SESSION_OPTIONS.update(:session_domain => '.saimonmoore.net')
Phew…eso ha sido bastante trabajo. A ver que nos ha proporcionado el plugin.
El Resultado Final
Activamos el mongrel:
$ mongrel_rails start
** Starting Mongrel listening at 0.0.0.0:3000
** Starting Rails with development environment...
** Mongrel is serving static files.
** Rails loaded.
** Loading any Rails specific GemPlugins
** Signals ready. TERM => stop. USR2 => restart. INT => stop (no restart).
** Rails signals registered. HUP => reload (without restart). It might not work well.
** Mongrel available at 0.0.0.0:3000
** Use CTRL-C to stop.
Vamos a la interfaz de administration de nuestro mephisto globalizado.
Nota: He redirigido el dominio .saimonmoore.net a localhost temporalmente por razones de pruebas.
He creado una presentación wink de esta siguiente parte ya que es la manera mas rapida de ver que resultados hay.
Haz clic aquí para ver la presentación.
La semana que viene, os presentaré la segunda parte donde hablaré de los temas de la puesta en producción y el despliegue que pueden surgir con el uso de este plugin.
[Actualización] Hay un requerimiento para instalar el gem ‘unicode’. Estoy trabajando para quitar esta dependencia del plugin.
Personas felices
Proyecto real
Web abierta
What can I say, besides thank you.
I just can’t wait to have this fun :)
My pleasure filipe.
Take care to use the very latest version of the plugin to ensure you don’t get absolute symlinks.
(See last updates)
Exactly what I was looking for. Many thanks!
Did anything change in the repository? I have no commented config.plugin line in environment.rb, and if I run the script to globalize mephisto tables, I get an error about uninitialized constant PermalinkFu :/
Hi Christoph,
If you don’t have a config.plugin line in your environment.rb then it’s likely you’re using rails 1.1.x. This plugin has only been tested with rails 1.2 but I’m pretty sure that it should work fine with 1.1 as well.
You have two options as far as I can see.
* Upgrade to rails 1.2 and add in the config.plugin line manually. Just ensure that the mephisto-i18n plugin is the last entry.
* Try it with rails 1.1 by just renaming the mephisto-i18n directory to something like zz_mephisto-i18n to ensure rails loads it last. As I said I haven’t tested it under 1.1 but I don’t think there should be any other problems.
The PermalinkFu error you’re getting sounds like you’re using the plugin against an older version of mephisto. This plugin was written against the current mephisto trunk (>= 0.7.3). It overrides the PermalinkF plugin which is in trunk.
I suggest that you upgrade your mephisto application by checking out the current trunk and moving over any themes etc…You’ll also want to take care of any schema changes between your current version of mephisto and trunk (though there shouldn’t be any great changes). Once you’ve upgraded satisfactorily, then try adding the mephisto_i18n plugin. I did exactly this procedure to upgrade my own site’s application.
If you have any other problems, feel free to contact me about them.
I already have the latest versions, what I mean is:
Warning: This task assumes you’re running mephisto trunk so it’s expecting the config.plugins property to be there (either commented or uncommented)
if I checkout mephisto from trunk, there is no such line
Hmm, perhaps you’re right but in any case you need to either add that line to ensure plugin order or rename the main plugin directory. Either way, you should ensure that the mephisto_i18n should be loaded last.
Hope that helps,
Regards,
Saimon
Hi, I’ve also got trunk version, and Rails 1.2.2 but when I’m running: $ script/runner ‘Mephisto::Plugins::I18n.install’ I’m getting: /usr/local/lib/site_ruby/1.8/rubygems.rb:196:in `activate’: can’t activate rails (= 1.1.6), already activated rails-1.2.2] (Gem::Exception)
do you know maybe what’s the problem?
Regards
Hi punkracy,
I haven’t seen that error before but my advice is to double check the version of rails being specified in the environment.rb
Regards,
Saimon
I have a small problem when running script/runner ‘Mephisto::Plugins::I18n.install’
It fails with the following backtrace : RAILS_ENV=production script/runner ‘Mephisto::Plugins::I18n.install’ /usr/local/lib/ruby/gems/1.8/gems/activesupport-1.4.2/lib/active_support/dependencies.rb:266:in `load_missing_constant’: uninitialized constant Mephisto::Plugin (NameError) from /usr/local/lib/ruby/gems/1.8/gems/activesupport-1.4.2/lib/active_support/dependencies.rb:452:in `const_missing’ from ./script/../config/../vendor/plugins/mephisto_i18n/lib/plugin.rb:3 from /usr/local/lib/ruby/site_ruby/1.8/rubygems/custom_require.rb:27:in `gem_original_require’ from /usr/local/lib/ruby/site_ruby/1.8/rubygems/custom_require.rb:27:in `require’ from /usr/local/lib/ruby/gems/1.8/gems/activesupport-1.4.2/lib/active_support/dependencies.rb:495:in `require’ from /usr/local/lib/ruby/gems/1.8/gems/activesupport-1.4.2/lib/active_support/dependencies.rb:342:in `new_constants_in’ from /usr/local/lib/ruby/gems/1.8/gems/activesupport-1.4.2/lib/active_support/dependencies.rb:495:in `require’ from /usr/local/lib/ruby/gems/1.8/gems/activesupport-1.4.2/lib/active_support/dependencies.rb:104:in `require_or_load’ ... 15 levels… from /usr/local/lib/ruby/gems/1.8/gems/rails-1.2.3/lib/commands/runner.rb:39 from /usr/local/lib/ruby/site_ruby/1.8/rubygems/custom_require.rb:27:in `gem_original_require’ from /usr/local/lib/ruby/site_ruby/1.8/rubygems/custom_require.rb:27:in `require’ from script/runner:3
I don’t really understand the issue. I’m using rails-1.2.3 and mephisto-trunk (rev 2923) with globalize r147 and mephisto_i18n r94. Any idea ? As it is an upgraded install of mephisto, I’ll try to reinstall everything from scratch otherwise.
Thanks!
Hi Saimon,
I’m finally getting a go at using mephisto_i18n again :)
I’ve gone through all steps no part I of your tutorial, and everything seems to be installed fine, after commenting out line 9 of lib/mephisto_i18n to bypass having to install the unicode gem for now.
rake tasks have run sucessfully and the admin interface showing the updates I saw on your wink presentation.
but, there seems to be a conflict with mephisto_erb_templates on the front-end – all erb statements get rendered as regular strings :P
would you have any idea where the two plugins conflict?
thanks Oliver
hi saimon, i have just one short question for you. as i’m trying to install mephisto_i18n on rails 2.0.2 and mephisto-edge (which is working great so far), i’m stuck with that script/runner-thing to globalize my tables:
script/runner ‘Mephisto::Plugins::I18n.install’ —> Anonymous modules have no name to be referenced by (ArgumentError)
which script exactly gets executed by that command? i’d really like to get into that and find out why it won’t work for me. (especially since it was working with an older revision of mephisto, which had unfortunately some other problems g)
thanks in advance MaD
good jop.
www.izmirwebtasarim.info
Nice! :)
Good post! Thank you!
I’m also having difficulties installing this plugin with the latest version of mephisto. There doesn’t seem to be a Mephisto::Plugin class. Anybody got any solutions?
Thank you for document.