Sajnos most sem tudok jelen lenni az újabb budapesti Drupal találkozón és megtekinteni a színvonalas előadásokat, pedig István pont a Drush használatáról fog előadni. Kár-kár.
Ősz óta vagyok aktív használója a Drushnak (kudos zionduc), de elérkezett az idő arra, hogy tovább mélyítsem a tudásomat ezen a területen is.
Hétvégén nekiálltam megismerkedni a Drush Make használatával és a Telepítési Profil elkészítésével. Bődületes, hogy mennyire hatékonyan tudja befolyásolni a Make fájlok futtatása a Drupal weblapok telepítését. Rövid idő alatt barátom lett hát a Drush Make.
A telepítő fájlok létrehozása azonban egy olyan terület, ami sokkal nagyobb tudást és tapasztalatot igényel egy zöldfülűtől, ami bizonytalanná tesz.
Egyszerű Drush Make fájlt futtatni valamint hasonlóan egyszerű telepítő profilt létrehozni nem volt gond a számomra ha ezeket külön-külön kezelem egymástól.
Ott akadtam el, hogy megpróbáltam valahogy párosítani a két dolgot. Azt szerettem volna elérni, hogy előbb lefuttatok egy rövid drush make parancsot ami három dolgot végez el:
1. Letölti a legfrissebb Drupal 7 kiadását
2. Letölt egy telepítési profilt egy adott webhelyről (ez lehet GitHub vagy a saját szerver, stb)
3. A Drupal telepítése során a kiválasztott profil (mindegy, hogy drush si-vel vagy a böngészős telepítéssel) pedig lefuttat egy újabb drush make parancsfájlt ami letölti a további contrib Drupal modulokat, majd utána nekiáll a profilban külön megadott modulokat bekapcsolni.
Semmilyen többlet információt nem használtam még a telepítő profilban, csak bemásoltam a "standard" profil .install, .profile fájlokat. Egyedül az .info fájlt módosítottam az újabb modulok engedélyeztetésével.
Külön lépesekben minden jól működött, csak arra nem jöttem rá, hogy a miként tud a telepítő profil futtatni egy újabb .make parancsfájlt.
Megnéztem a "pp" és a "csakistvan" nyilvános GitHub repóját is, ahol habár hasznos információt kaptam a srácoktól (közszönöm, nagyok vagytok!), valahogy mégsem tudtam megoldani a fenti problémát.
Közben egy ausztráliai Drupal fejlesztő tartott az elmúlt évben egy előadást pont erről a témáról, azt is megnéztem és habár sokat segített mégsem tudtam a dolog végére járni.
Lehet, hogy csak egy sort kell beillesztenem és működne a dolog, de vajon hol és mit? Előre is megköszönném, ha valaki a tapasztaltabb kollégák közül segíteni ezt a kis buckát átlépni! Egy egész éjszakám ráment a keresgélésre és mára már túl zombi voltam, ahhoz, hogy megnézzem a Spark vagy a Commerce disztrókat, ahol tudom, hogy a telepítő profil make fájlt futtat le és sok-sok contrib modult engedélyez a folyamat alatt.
Feltöltöttem a DropBoxra egy egyszerű minta telepítési csomagot is, ezt megnézve láthatjátok, hogy mire gondoltam pontosan: http://db.tt/w8XznelR
Vajon mit rontottam el, Ti hogyan csinánátok jobban és hatékonyabban?
Előre is köszönöm a segítségeteket!
Pontosítom ezt még egy picit
Sorry, természetesen a .install, .profile és az .info fájlokat átírtam ott, ahol szükséges volt ahhoz, hogy a telepítő profil elinduljon rendben. Ilyen volt pl. a
function minta_install()
és afunction minta_form_install_configure_form_alter(&$form, $form_state)
stb. kódrész is.A minta telepítő profil egyébként nem csinál semmi egyebet, minthogy letölti a Views és a CTools modulokat és engedélyezi azok használatát.
A profile nem tölt le semmit,
A profile nem tölt le semmit, az beállítja a modulokat. A make fájl az ami leírja, hogy miket, honnan és hova kell letölteni ahhoz, hogy a profil egyáltalán elinduljon.
Simán összerakhatsz egy alap.make fájlt, amiben a core-on kívül benne van a views, ctools, rules stb. Ekkor megspórolod azt az időt, hogy kockás füzetből összevadászva kelljen letöltened ezeket a modulokat.
Aztán összerakhatsz egy dev.make fájlt, ami beinkludolja az alap.make fájlt. Ekkor kapsz egy olyan make fájlt, ami mindent tartalmaz mint az alap, de pluszban benne vannak a fejlesztői eszközök (devel, devel_themer, potx, coder, stb.)
Ezek a fájlok nem csinálnak semmit se, csak leírják, hogy milyen modulokra(foltokra stb.) van szükséged. Ezek segítségével a drush make-el könnyedén le tudod tölteni/összeállítani a fájljaidat.
Make fájlt profile nélkül is tudsz csinálni, és használni. Nagyon hasznos önmagában is.
Profil készítésnél én javasolnám a minimal profilt kiindulási alapként, és ha azzal már nagy gyakorlatod van, akkor térni át a standardra. Akár úgy is, hogy folyamatosan emelsz át abból kódrészleteket.
Komplexitás szintjén ha a Drush make profi használata 1 egység, akkor ugyan az profil-ban 50-100 egység.
Amit hibát szerintem elkövettél, hogy végtelen ciklusba kergetted szegény Drush make-t. Ugyanis úgy dolgozik, hogy ha letölt egy csomagot és abban van egy, a csomag kulcsával megegyező make fájl, akkor azt végrehajtja. Ha abban megint van egy akkor azt is... Ha ugyan az a neve a projektnek, mint a make fájlnak akkor végtelen ciklusba kerül.
A mint-core.make-ban a következő sorokat:
írd át erre (pl.):
pp
pp
Palócz István
https://palocz.hu | https://tanarurkerem.hu
Drush Make + Telepítő Profil Saga
Köszönöm az értékes válaszod. Igazad van "pp", hogy kevertem a szezont a fazonnal, Mea Culpa. Köszi a helyreigazítást, hasznát vettem mindannak amit tanácsoltál!
Kicsit hülyén érzem magam, mert nem mindig tudom egyértelműen kifejezni, hogy eddig mire jutottam önállóan, mi az ami már jól megy és legfőképpen, hogy mit szeretnék elérni. Arról nem is beszélve, hogy miben kérem a segítségeteket.
A Drush Make használatának megismerése jó alkalom volt a számomra arra, hogy a Drupal telepítő profilok létrehozásával is foglalkozzak illetve legyen egy jó ürügy arra, hogy a GitHub-on is nekiessek egy új reponak. Biztosra veszem, hogy gyorsabb lesz ezentúl egy-egy Drupal weboldal telepítése a számomra.
Kedden a második márciusi online megrendezésre kerülő székesfehérvári Drupal felhasználók találkozóján, (egy Google+ Hangout-on) már nemcsak a Drushról tartottam egy rövid kedvcsinálót, hanem egy Drush Make-t is le tudtam futtatni a többieknek. Minden résztvevő aktívan kivette részét a találkozón, mert mindenki bevállalt egy-egy kis előadást valamilyen témában.
Tényleg úgy van ahogy mondtad, a telepítő profilok létrehozása már jóval elmélyültebb Drupal tudást igényel. Én már annak is nagyon örültem a héten, hogy odáig képes voltam eljutni, hogy modulokat tudtam engedélyeztetni vele ezzel is felgyorsítva a munkafolyamatot.
Persze látom, hogy mi mindenre lehet még képes a standard profil, a Spark disztró vagy egyéb Drupal kiadások profilja. Észvesztő, és akkor még nem is említetted a Feature-t. Ez még nagyon távoli cél előttem, hogy valahogy összeboronáljam a Drush + Drush Make + Telepítő Profil és a Featuret mint eszközöket.
Ha van kedved és szabad időd, akkor megnéznéd azt a közel 3 perces kisfilmet, amit ma éjjel készítettem a Drush Make tanuló folyamatról? Arról, hogy meddig jutottam el. Lehet, hogy mások gázosnak látják ezt, de most bevállalom így hajnal 3-4 felé kicsit zombi állapotban.
Örülnék még egy utolsó visszajelzésnek, mert a válaszodban írtad, hogy egy végtelen ciklusba kergettem a Make parancsot, de biztosan így van vagy csak amiatt láttad így, mert korábban nem voltam érthetőbb? Most minden rendben lefutott.
A "minta" Drupal telepítő profil a GitHub-on: https://github.com/robertpetras/minta
A kisfilm a "minta" Drush Make használatáról: http://www.youtube.com/watch?v=2rN7p3dZkjk&feature=share&list=PLotV3wAnH9ROLVGsOpe9Y64jfjBwLD2mE
Legvégül pedig ezt a Drush Make Build-et futtatva indítottam el a munkafolyamatot:
Előre is köszönöm, ha válaszolni tadna valaki arra, hogy mindtent rendben talál-e vagy sem!
Megtaláltam a választ az eldugott dokumentációban
Ahogy a fent belinkent filmen látjátok sikerült összehoznom a Drush Make build fájl futtatásával egy Drupal telepítő profilban újabb Make fájl futtatását.
Bosszantott azonban a dolog, hogy nem tudtam jól artikuláltan megfogalmazni, hogy mi volt a gondom és hol akadtam el. Addig keresgéltem hát, amíg találtam egy jó leírást erre a folyamatra.
A jól érthető választ a Drush telepítése/letöltése során létrehozott dokumentációs mappában találtam meg. A
./drush/docs/make.txt
eredetileg markdown fájlnak készült doksi oldalon van egy rész, amely leírja a rekurziós folyamatot.Bemásolom ide ezt a rész, hátha egyszer valaki megtalálja az oldalt hasonló kérdésre keresve a választ.