web-gelistirme-sc.com

tek bir modül için drush updatedb

Hızlı bir şekilde tek bir modülün güncelleme işlevini gerçekleştirmek mümkün müdür? Görebiliyorum drush updatedb bir modül adını argüman olarak almaz ve mevcut tüm güncellemeleri çalıştırır. Sonra drush pm-update wich ayrıca yeni dosyaları kontrol eder. belgeler diyor ki:

(pm-updatecode + updatedb ile aynı)

drush pm-update Her mevcut güncelleme Tam olarak bir modülü (db) güncellemenin bir yolu var mı?

28
nonsenz

Hayır, yapamazsınız.

Her modülü kendi başlarına güncellemek istiyorsanız, yalnızca tek bir modülün dosyalarını güncelleyin ve updatedb komutunu çalıştırın.

10
Berdir

Drush 5.7'de drush pm-update --no-core module-name. Drush otomatik olarak geçerli modülü yedekler, yeni sürümü indirir ve veritabanını güncellemenizi ister.

22
ahimsauzi

Yalnızca bir güncelleştirme çalıştırmak isterseniz, örneğin drush eval foo_update_33() çalıştırabilirsiniz. Uygulamada, .install dosyasını yüklemeniz gerektiğinden biraz daha karmaşıktır, ancak çok fazla değil.

Ayrıca @ macaleaa çözümünü deneyebilirsiniz:

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

8
moshe weitzman

hiçbiri drush up someproject veya drush upc someproject, yalnızca someproject modülünü güncelliyor gibi görünüyor. İstediğinizin farklı bir yolu:

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

İşte Drupal.org'daki benzer bir konu. Kendine iyi bak!

5
myselfhimself

Drush 5.9 kullanıyorum & tek bir modülü başarıyla bu komutla güncelleyebilirsiniz:

drush dl *project*

Örneğin, 'devel' modülünü güncellemek için:

drush up devel
4
Rod

Bunun Drush ile up kullanarak mümkün olduğuna inanıyorum:

drush up module_name
1
zgreen

Bir güncelleme fonksiyonu (MYMODULE_update_7101) Tarafından oluşturulan bir tablo vardı, ama bu tablo her önbellek temiz ve hemen hemen her drush çağrısı (temelde varlık türlerinin adlarını alıyordu) kod bir yere erişildi tüm menüler ve başka herhangi bir şey için). drush updatedb Çalıştırılması, birinci yerine MYMODULE_update_7101 Çalıştırıyordu.

@Macaleaa ve @moshe weitzman tarafından önerilen çözümü denedim:

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

drush updatedb çalıştırmadan önce, ama bu yardımcı olmadı - updatedbMYMODULE_update_7101() 'i çalıştırmayı tekrar denedi ve tablonun zaten var olduğunu söyleyerek hata verdi. Temel olarak, yukarıdaki kod güncellemeyi çalıştırdı, ancak güncellemenin çalıştırıldığı sistemde izini bırakmadı. Muhtemelen db, vb modül için en son sürüm numarasını saklamak için her güncelleme çalıştırdıktan sonra bir sürü başka şeyler update.php Yapmak zorunda.

Güncelleme işlevini çağıracak ve diğer tüm şeyleri yapacak bir işlev arayarak, her güncelleme işlevini gerçekten çalıştırdığını ve sonrasında ne yaptığını görmek için update.php 'Dan geçtim. Ben bunu elde sona erdi:

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

Hangi aslında drush ile koştu:

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

Güncellemeyi çalıştırdı, sorun değil, ancak MYMODULE sürüm 7101 hala updatedb, koştuğumda hala güncelleme listesinde göründü, ALTHOUGH hata vermeden çalıştı ve her şey sitenin denetiminde iyi görünüyordu.

Biraz kibirli ve 6 yıl geç, ama her şey yolunda mı?

0
nerdlinger