¿Es posible realizar la función de actualización de un solo módulo a través de drush? Puedo ver drush updatedb
cuál no toma un nombre de módulo como argumento y ejecuta todas las actualizaciones disponibles. Luego está el drush pm-update
que también busca nuevos archivos. la documentación dice:
(igual que pm-updatecode + updatedb)
¿Significa esto que si ejecuto drush pm-update
todas las actualizaciones disponibles (nuevas actualizaciones de function_function) se realizarán? ¿Hay alguna manera de actualizar (db) solo un módulo exactamente?
Respuestas:
No puedes.
Si desea actualizar cada módulo por su cuenta, solo actualice los archivos de un solo módulo y luego ejecute updatedb.
fuente
drush dl
(¡probablemente desee eliminar el módulo anterior primero para no quedarse con los archivos más antiguos que no están destinados a la nueva versión!)En Drush 5.7 puedes ejecutar el comando
drush pm-update --no-core module-name
. Drush respaldará automáticamente el módulo actual, descargará la nueva versión y le pedirá que actualice la base de datos.fuente
Si desea ejecutar solo una actualización, puede ejecutar
drush eval foo_update_33()
, por ejemplo. En la práctica, es un poco más complejo que eso, ya que tiene que cargar el archivo .install pero no mucho.También puedes probar la solución @macaleaa:
drush php-eval 'module_load_install('my_module');my_module_update_7XXX();'
fuente
function devel_update_7000
es el que tiene el número más bajo, y se ejecutan en primer lugar, a continuaciónfunction devel_update_7001
, etcdrush php-eval 'module_load_install('file_entity');file_entity_update_7211();'
ni
drush up someproject
, tampocodrush upc someproject
parecen parecen actualizar sólo elsomeproject
módulo. Una forma diferente de hacerlo es a través de:Aquí hay una discusión sobre un tema similar en Drupal.org. Cuídate !
fuente
drush up someproject
FUNCIONA, PERO desafortunadamente verifica TODAS las actualizaciones disponibles para los módulos habilitados de forma predeterminada también (lo que no sería necesario), escribe "Actualización disponible" para algunos de ellos, pero SOLO actualiza el proyecto específico. Aquí hay una captura de pantalla: i.imgur.com/TDDmB.png . Como puede ver, hay varias actualizaciones disponibles, pero solo xmlsitemap se actualiza condrush up xmlsitemap
.Estoy usando Drush 5.9, y puedo actualizar un solo módulo con éxito con este comando:
Entonces, por ejemplo, para actualizar el módulo 'devel':
fuente
Creo que esto es posible ahora con Drush, usando
up
:fuente
Tuve una situación en la que una tabla creada por una función de actualización (
MYMODULE_update_7101
), pero a esa tabla se estaba accediendo en código en algún lugar de cada caché limpia y casi cada llamada borrosa (básicamente obtenía los nombres de tipos de entidad para todos los menús y lo que sea más). Correrdrush updatedb
era correrMYMODULE_update_7101
tercero en lugar de primero.Probé la solución sugerida por @macaleaa y @moshe weitzman de correr:
antes de correr
drush updatedb
, pero esto no ayudó: la carrera drush falló porqueupdatedb
trató nuevamente de correrMYMODULE_update_7101()
y erró, diciendo que la mesa ya existía. Básicamente, el código anterior había ejecutado la actualización, pero no dejó su marca en el sistema de que la actualización se había ejecutado. Presumiblemente, hay un montón de otras cosasupdate.php
que hacer después de ejecutar cada actualización para almacenar el último número de versión para el módulo en la base de datos, etc.Revisé
update.php
para ver cómo se ejecuta cada función de actualización y qué hace después, buscando una función para llamar que llame a la función de actualización y también haga todas las demás cosas. Terminé llegando a esto:Lo que realmente corrí con drush:
Ejecutó la actualización, no hay problema, pero MYMODULE versión 7101 todavía apareció en la lista de actualizaciones cuando ejecuté
updatedb
, aunque se ejecutó sin errores y todo se veía bien en la inspección del sitio.Un poco hacky y con 6 años de retraso, pero todo está bien y eso termina bien
fuente