it-swarm.dev

updatedb drush untuk satu modul

Apakah mungkin untuk melakukan fungsi pembaruan satu modul melalui drush? Saya dapat melihat drush updatedb yang tidak menggunakan nama modul sebagai argumen dan menjalankan semua pembaruan yang tersedia. Lalu ada drush pm-update yang juga memeriksa file baru. the dokumentasi mengatakan:

(sama seperti pm-updatecode + updatedb)

Apakah ini berarti jika saya menjalankan drush pm-update setiap pembaruan yang tersedia (keluar dari update_fungsi yang lebih baru) akan dilakukan? Apakah ada cara untuk hanya (db) memperbarui persis satu modul?

28
nonsenz

Tidak bisa.

Jika Anda ingin memperbarui masing-masing modul sendiri, perbarui hanya file satu modul dan kemudian jalankan updatedb.

10
Berdir

Pada Drush 5.7 Anda dapat menjalankan perintah drush pm-update --no-core module-name. Drush akan secara otomatis membuat cadangan modul saat ini, mengunduh versi baru dan meminta Anda untuk memperbarui database.

22
ahimsauzi

Jika Anda ingin menjalankan hanya satu pembaruan, Anda dapat menjalankan drush eval foo_update_33(), misalnya. Dalam praktiknya, ini sedikit lebih rumit dari itu karena Anda harus memuat file .install tetapi tidak banyak.

Anda juga dapat mencoba solusi @ macaleaa:

drush php-eval 'module_load_install('my_module');my_module_update_7XXX();'

8
moshe weitzman

juga drush up someproject, atau drush upc someproject tampaknya hanya memperbarui modul someproject. Cara berbeda untuk itu yang Anda inginkan adalah melalui:

drush dl someproject #use --select option to be prompted for a module version
                     #this will overwrite your exising module's files
                     #backup your modules files with --backup, yourself, use a VCS to revert
drush updb           #run available database update scripts

Ini diskusi topik serupa di Drupal.org. Hati-hati!

5
myselfhimself

Saya menggunakan Drush 5.9, & dapat memperbarui satu modul dengan sukses dengan perintah ini:

drush dl *project*

Jadi, misalnya, untuk memperbarui modul 'devel':

drush up devel
4
Rod

Saya percaya ini sekarang mungkin dengan Drush, menggunakan up:

drush up module_name
1
zgreen

Saya memiliki situasi di mana tabel dibuat oleh fungsi pembaruan (MYMODULE_update_7101), Tetapi tabel itu sedang diakses dalam kode di suatu tempat di setiap cache jelas dan hampir setiap panggilan drush (pada dasarnya mendapatkan nama-nama jenis entitas untuk semua menu dan yang lainnya). Menjalankan drush updatedb Menjalankan MYMODULE_update_7101 Ketiga alih-alih pertama.

Saya mencoba solusi yang disarankan oleh @macaleaa dan @moshe weitzman untuk menjalankan:

drush php-eval 'module_load_install('MYMODULE');MYMODULE_update_7101();'

sebelum menjalankan drush updatedb, tetapi ini tidak membantu - menjalankan drush gagal karena updatedb mencoba lagi untuk menjalankan MYMODULE_update_7101() dan gagal, mengatakan bahwa tabel sudah ada. Pada dasarnya, kode di atas telah menjalankan pembaruan, tetapi tidak meninggalkan bekas pada sistem bahwa pembaruan telah dijalankan. Agaknya ada banyak hal lain yang harus dilakukan update.php Setelah menjalankan setiap pembaruan untuk menyimpan nomor versi terbaru untuk modul di db, dll.

Saya membaca update.php Untuk melihat bagaimana sebenarnya menjalankan setiap fungsi pembaruan dan apa yang dilakukan setelahnya, mencari fungsi untuk memanggil yang akan memanggil fungsi pembaruan dan juga melakukan semua hal lainnya. Saya akhirnya mendapatkan ini:

include_once DRUPAL_ROOT . "/includes/update.inc";
$c["results"]["#abort"] = array();
update_do_one("MYMODULE", 7101, array(), $c);

Yang sebenarnya saya jalankan dengan drush:

drush eval 'include_once DRUPAL_ROOT . "/includes/update.inc"; $c["results"]["#abort"] = array(); update_do_one("MYMODULE", 7101, array(), $c);'

Itu menjalankan pembaruan, tidak ada masalah, tetapi kemudian MYMODULE versi 7101 masih muncul di daftar pembaruan ketika saya berlari updatedb, SELALU itu berjalan tanpa kesalahan dan semuanya tampak bagus saat memeriksa situs.

Agak macet dan terlambat 6 tahun, tetapi semua baik-baik saja itu berakhir dengan baik?

0
nerdlinger