„Rubygems“, „Bundler“ ir „RVM“ ryšys

Koks yra tinkamas kiekvienos iš jų vaidmuo?

Atsižvelgiant į mano ribotą supratimą apie „Bundler“ ir „RVM“, atrodo, kad jie, kaip ir Rubygems, turi savo brangakmenių diegimo vietas. Be to, kiekvienam iš jų yra galimybė įdiegti sisteminius kelius, naudojant sudo arba į savo namų katalogą. Ir tada yra galimybė parduoti brangakmenius naudodami „Bundler“ (kai taikoma, pvz., „Rails“).

Taigi man atrodo, kad dabar yra bent septynios vietos brangakmenių montavimui:

  • Kelias į „Rubygems“ sistemą
  • „Rubygems“ vartotojo kelias
  • RVM sistemos kelias
  • RVM pasirinktinis kelias
  • „Bundler“ sistemos kelias
  • Vartotojo Bundler kelias.
  • Tiekėjas (pagal paraišką)

Taigi, kas yra geriausias būdas tai padaryti? Ar mes naudojame visus tris („Rubygems“, „Bundler“, „RVM“) ir pasakome jiems viską, kad būtų galima įdiegti brangakmenius toje pačioje vietoje? Ar mes visą laiką, sudo ar niekada, naudojame sudo ? Ar turėtume naudoti kitokią gamybos ir kūrimo mašinų strategiją?

Kalbant apie pastabą, ar „Bundler“ ir „RVM“ įvyniojimai aplink Rubygemę, ar jie yra alternatyva jai, ar jie yra visiškai ortogoniniai?

28
06 дек. nustatyti rlkw1024 06 dec. 2010-12-06 01:25 '10 ne 1:25 2010-12-06 01:25
@ 2 atsakymai

„Bundler“ svetainėje :

„Bundler“ leidžia lengvai įsitikinti, kad jūsų programa turi priklausomybę, reikalingą paleisti ir paleisti be klaidų.

Tai reiškia, kad kai kuriam kitam kūrėjui ar kitam įrenginiui yra nereikšminga pasirengti tolesniam tobulinimui arba naudoti jį vykdant bundle install , ir jūs turite viską, ko reikia norint pradėti ir paleisti.

RVM yra skirta valdyti kelias Ruby versijas toje pačioje mašinoje ir persijungti tarp jų. „Gemsets“ yra galinga RVM funkcija, kuri skiria brangakmenius vienai programai / bibliotekai iš likusios sistemos.

Naudojant RVM ir Bundler kartu, RVM pasakoja „Bundler“, kur turėtų būti akmenys, ir „Bundler“ juos įdiegia į RVM aplanką.

Abi (brangakmeniams RVM atveju) yra naudojamos ir priklauso nuo Rubygems, todėl jos yra arčiausiai vyniojimo.

Aš asmeniškai naudoju Bundler ir RVM visiems savo projektams. Nėra gemset, tik Bundlerio, kad išspręstumėte ir išspręstumėte tai, ką jis daro be jokių nesėkmių. Brangakmenių diegimas atliekamas be sudo ir baigiasi taške, kuris apibrėžia RVM. Numatytasis „Ruby“ diegimas mano sistemoje paliekamas vienas, ir niekas neįdiegtas į „Rubygems“ naudotojo sistemą / kelią.

31
06 дек. Atsakymą pateikė PerfectlyNormal 06 gruodis 2010-12-06 01:39 '10 ne 1:39 2010-12-06 01:39

Kaip tai padaryti dabar (dar bandau šiek tiek):

  • Naudokite RVM, norėdami konfigūruoti rubino versiją ir „gemset“, skirtą naudoti programoje. Aš naudoju .rvmc failą programos katalogo šaknyje, kad įsitikintumėte, jog visą laiką naudojamas teisingas rubinas ir brangakmenis.

  • „Bundler“ šiame gemset'e įdiegta naudojant perlas be sudo.

  • Visi akmenys, reikalingi programai, pridedami prie „Gemfile“ programos ir įdiegiami naudojant „Bundler“. Aš nesinaudoju sudo.

Taigi, naudoju Bundler stebėti priklausomybes kiekvienai programai ir RVM atskirti kiekvieną paraišką iš akmenų vienas nuo kito. Tiesą sakant, jis veikia labai sklandžiai.

Aš dar neįdiegiau RVM savo diegimo serveryje, tiesiog naudoju „Bundler“, kad įsitikintumėte, jog visos programos priklauso nuo jų. Tikriausiai taip pat įdiegsiu RVM, bet turiu išsiaiškinti, kaip ji pirmiausia žaidžia su Keleiviu.

Kalbant apie jūsų paskutinį klausimą, „Bundler“ yra apsuptas brangakmenio, RVM tiesiog kontroliuoja gempathą, kuriame yra nustatyti brangakmeniai. Atrodo, kad jis yra pakankamai protingas, kad jis perima brangakmenius iš tos pačios vietos, nors man nereikia iš naujo kompiliuoti bet kokio, kuris jau yra įdiegtas kituose brangakmeniuose.

Nustojau naudoti sudo, norėdamas įdiegti brangakmenius po to, kai pradėjau naudoti RVM. Tiesą sakant, nėra jokios priežasties tiesiog jas įdiegti į RVM vartotojo kelią. Nesu tikras dėl geriausios praktikos, jei turite daugiau kūrėjų tame pačiame aparate, kaip ir bandymo serveris, arba kažkas panašaus.

3
06 дек. atsakymas duotas Harald 06 Dec. 2010-12-06 01:42 '10 ne 1:42 2010-12-06 01:42

Kiti klausimai apie žymes arba Užduoti klausimą