Bundle Me Some Sanity

2010-03-31 21:40:44 +0000

You know, there are these two guys working in broad daylight on Bundler, Yehuda and Carl (he’s the one in the sidecar), but I don’t think people have really grasped the importance of what they are doing.

Bundler is just as mind blowing a development for Rails 3 as any other change in the Rails framework. As the wycats states; “Bundler manages an application’s dependencies through it’s entire life across many machines systematically and repeatably”.

To me, bundler takes the guess work out of dependency management, it simply provides you with a way to know what gems you are distributing with your application, we (as a Ruby community) have never had such a comprehensive solution to gem management before.

But like any new tool, it is going to go through some growing pains. To my surprise, (and the credit of the authors) the growing pains have been short and sharp, rapidly fixed as bundler grows to whole new levels of reliability.

And also like any new tool, it is optimised for certain environments, in bundler’s case, USE RVM! If you are not using RVM and you are running multiple rubies with Bundler, honestly, you’re mad. Do yourself a favour, download RVM and use it. You can then specify sand boxes of gem sets for each ruby or application you have, goodbye incompatible gems conflicting with each other.

To give you a taste of just how awesome the Bundle RVM marriage is, check this out:

After you install RVM, go into the directory of each app you want to have their own private gem sets and create a file called .rvmrc and put in there:

rvm ruby-1.8.7@railsplugins

Which is what I have on my RailsPlugins.org repository.

Then change into the directory, and RVM will tell you it doesn’t know about the gemset:

$ cd railsplugins
Gemset 'railsplugins' does not exist, rvm gemset create 'railsplugins' first.

OK, so go ahead and create the gemset and have a look at what gems you have installed:

$ rvm gemset create 'railsplugins'
Gemset 'railsplugins' created.
$ gem list

*** LOCAL GEMS ***

$ ruby -v
ruby 1.8.7 (2010-01-10 patchlevel 249) [i686-darwin10.2.0]

Good… see? A clean ruby 1.8.7, as if you just bought the computer.

Now go ahead and install bundler for this clean gemset:

$ gem install --no-rdoc --no-ri bundler
Successfully installed bundler-0.9.14
1 gem installed

Cool, now all that we have left is to give bundler the reins and tell it to do what it does best:

$ bundle install
<lots of output>

Now when you gem list for that directory you will get all the gems in your gem file, and when you move to a different directory (with a different .rvmrc) all your gems get magically switched out for the new set.

Honestly, with the number of different clients I am coding for and the number of libraries I am working on, I can’t imagine being any where near as productive without the RVM and bundler team.

Yehuda has made a fairly comprehensive guide to bundler at the Gem Bundler site which you should read through and understand, and I have only brushed the surface of RVM, you should check it out as well at the RVM site

blogLater

Mikel

  1. CT Exterior Painting Says:

    Exterior House Painting in CT area towns like Glastonbury, Simsbury, Avon, Farmington, West Hartford, Wethersfield, Southington, Old Lyme, Middletown, and many more.

    Franklin Painting is a professional, insured and licensed company. Our employees are courteous, experienced and motivated to deliver top quality results for all types of painting, exterior painting, cabinet refinishing, interior painting, deck cleaning, deck painting, roof cleaning and pressure washing. Every employee will be in uniform and driving a Franklin Painting marked vehicle. We have been CT’s best choice for painting for over 25 years. Based in Farmington and Glastonbury we serve a wide area with our top rated painting services. Read some of our reviews on the website and you will see that we are dedicated to customer service and satisfaction.
    When it comes to exterior house painting, the seasons also dictate when we can work – so if you are planning a spring or summer painting, make sure that you get on our schedule early in the year.

    Call us Toll Free at 877-646-7774
    or at our main office number 860-678-7701
    2 Eastview Drive, Farmington, CT 06032

    CT House Painter in farmington, ct 06032 – avon, ct 06001 – simsbury, ct 06070 – west simsbury, ct 06092 – canton, ct 06019 – burlington, ct 06013 – bloomfield, ct 06002 – unionville, ct 06085 – weatogue, ct 06089 – suffield, ct 06078 – windsor, ct 06095 – granby, ct 06035 – collinsville, ct 06022 – west hartford, ct 06110 – 06117 – 06119 – 06127 – 06133 – 06137 / bristol, ct 06010 – new britain, ct – 06050 – 06051 – 06052 – 06053 / newington, ct 06111 – wethersfield, ct 06109 – cromwell, ct 06416 – rocky hill, ct 06067- berlin, ct 06037 – kensington, ct 06037 – portland, ct 06480 – middletown, ct 06547 – meriden, ct 06450 – middlefield, ct 06455 – east hampton, ct 06424 – chesire, ct 06410 – southington, ct 06489 – glastonbury, ct 06033 – south glastonbury, ct 06073- south windsor, ct 06074 – elllington, ct – east windsor, ct 06088 – hebron, ct 06248 – marlborough, ct 06447 – manchester, ct 06040 – 06042 – 06045 – bolton, ct 06043 – colchester, ct 06415 – tolland, ct 06084

  2. CT Exterior Painting Says:

    Exterior House Painting in CT area towns like Glastonbury, Simsbury, Avon, Farmington, West Hartford, Wethersfield, Southington, Old Lyme, Middletown, and many more.

    Franklin Painting is a professional, insured and licensed company. Our employees are courteous, experienced and motivated to deliver top quality results for all types of painting, exterior painting, cabinet refinishing, interior painting, deck cleaning, deck painting, roof cleaning and pressure washing. Every employee will be in uniform and driving a Franklin Painting marked vehicle. We have been CT’s best choice for painting for over 25 years. Based in Farmington and Glastonbury we serve a wide area with our top rated painting services. Read some of our reviews on the website and you will see that we are dedicated to customer service and satisfaction.
    When it comes to exterior house painting, the seasons also dictate when we can work – so if you are planning a spring or summer painting, make sure that you get on our schedule early in the year.

    Call us Toll Free at 877-646-7774
    or at our main office number 860-678-7701
    2 Eastview Drive, Farmington, CT 06032

    CT House Painter in farmington, ct 06032 – avon, ct 06001 – simsbury, ct 06070 – west simsbury, ct 06092 – canton, ct 06019 – burlington, ct 06013 – bloomfield, ct 06002 – unionville, ct 06085 – weatogue, ct 06089 – suffield, ct 06078 – windsor, ct 06095 – granby, ct 06035 – collinsville, ct 06022 – west hartford, ct 06110 – 06117 – 06119 – 06127 – 06133 – 06137 / bristol, ct 06010 – new britain, ct – 06050 – 06051 – 06052 – 06053 / newington, ct 06111 – wethersfield, ct 06109 – cromwell, ct 06416 – rocky hill, ct 06067- berlin, ct 06037 – kensington, ct 06037 – portland, ct 06480 – middletown, ct 06547 – meriden, ct 06450 – middlefield, ct 06455 – east hampton, ct 06424 – chesire, ct 06410 – southington, ct 06489 – glastonbury, ct 06033 – south glastonbury, ct 06073- south windsor, ct 06074 – elllington, ct – east windsor, ct 06088 – hebron, ct 06248 – marlborough, ct 06447 – manchester, ct 06040 – 06042 – 06045 – bolton, ct 06043 – colchester, ct 06415 – tolland, ct 06084

  3. CT Exterior Painting Says:

    Exterior House Painting in CT area towns like Glastonbury, Simsbury, Avon, Farmington, West Hartford, Wethersfield, Southington, Old Lyme, Middletown, and many more.

    Franklin Painting is a professional, insured and licensed company. Our employees are courteous, experienced and motivated to deliver top quality results for all types of painting, exterior painting, cabinet refinishing, interior painting, deck cleaning, deck painting, roof cleaning and pressure washing. Every employee will be in uniform and driving a Franklin Painting marked vehicle. We have been CT’s best choice for painting for over 25 years. Based in Farmington and Glastonbury we serve a wide area with our top rated painting services. Read some of our reviews on the website and you will see that we are dedicated to customer service and satisfaction.
    When it comes to exterior house painting, the seasons also dictate when we can work – so if you are planning a spring or summer painting, make sure that you get on our schedule early in the year.

    Call us Toll Free at 877-646-7774
    or at our main office number 860-678-7701
    2 Eastview Drive, Farmington, CT 06032

    CT House Painter in farmington, ct 06032 – avon, ct 06001 – simsbury, ct 06070 – west simsbury, ct 06092 – canton, ct 06019 – burlington, ct 06013 – bloomfield, ct 06002 – unionville, ct 06085 – weatogue, ct 06089 – suffield, ct 06078 – windsor, ct 06095 – granby, ct 06035 – collinsville, ct 06022 – west hartford, ct 06110 – 06117 – 06119 – 06127 – 06133 – 06137 / bristol, ct 06010 – new britain, ct – 06050 – 06051 – 06052 – 06053 / newington, ct 06111 – wethersfield, ct 06109 – cromwell, ct 06416 – rocky hill, ct 06067- berlin, ct 06037 – kensington, ct 06037 – portland, ct 06480 – middletown, ct 06547 – meriden, ct 06450 – middlefield, ct 06455 – east hampton, ct 06424 – chesire, ct 06410 – southington, ct 06489 – glastonbury, ct 06033 – south glastonbury, ct 06073- south windsor, ct 06074 – elllington, ct – east windsor, ct 06088 – hebron, ct 06248 – marlborough, ct 06447 – manchester, ct 06040 – 06042 – 06045 – bolton, ct 06043 – colchester, ct 06415 – tolland, ct 06084

  4. traffic ticket resolution las vegas Says:

    learning how to use Rail and this bundle will be useful in the future when I learn how to use now.
    traffic ticket resolution las vegas

  5. cash register Says:

    Amazing article. It proved to be very useful to me and I am sure to all the commenters here!

    Mesin Kasir | Komputer Kasir | Jual Barcode | Printer Kasir

    Printer Kartu

  6. cash register Says:

    Good article, I really liked it, I appreciate you and hopping for some more informative posts, Thanks.

    Mesin Kasir | Komputer Kasir | Jual Barcode | Printer Kasir

    Printer Kartu

  7. visiter le site Says:

    look like a star programmer, many thanks for the tips on thisvisiter le site

  8. wer Says:

    ótimo post e agradável você ter feito isso aqui que esta informação não está disponível jogadas pokerna Internet graças inteiros

  9. wer Says:

    ótimo post e agradável você ter feito isso aqui que esta informação não está disponível jogadas pokerna Internet graças inteiros

  10. wer Says:

    ótimo post e agradável você ter feito isso aqui que esta informação não está disponível jogadas pokerna Internet graças inteiros

  11. wer Says:

    ótimo post e agradável você ter feito isso aqui que esta informação não está disponível jogadas pokerna Internet graças inteiros

  12. pascal friederich Says:

    thanks for the post, but whenever I cd into my project directory, rvm just promts:
    ruby ruby-1.8.7@project_a is not installed.
    To install do: ‘rvm install ruby-1.8.7@project_a’

    the content of my .rvmrc is:
    rvm ruby-1.8.7@project_a

    and rvm —version is:
    rvm 0.1.24 by Wayne E. Seguin (wayneeseguin@gmail.com) [http://rvm.beginrescueend.com/]

    any ideas?

  13. pascal friederich Says:

    thanks for the post, but whenever I cd into my project directory, rvm just promts:
    ruby ruby-1.8.7@project_a is not installed.
    To install do: ‘rvm install ruby-1.8.7@project_a’

    the content of my .rvmrc is:
    rvm ruby-1.8.7@project_a

    and rvm —version is:
    rvm 0.1.24 by Wayne E. Seguin (wayneeseguin@gmail.com) [http://rvm.beginrescueend.com/]

    any ideas?

  14. pascal friederich Says:

    Sorry for the comment spam..

    turns out that the @ separator for gemsets is a new feature in 0.1.25 (used to be ‘%’) which can be installed using rvm udate —head

    cheers

  15. Wayne E. Seguin Says:

    @pascal Yes, get head often: `rvm update —head` It moves fast. Any questions/issues when using ask me in #rvm on irc.freenode.net

    @mikel I have some additional notes for you,

    In the .rvmrc example if you change this:

    rvm ruby-1.8.7@railsplugins

    To this:

    rvm —create ruby-1.8.7@railsplugins

    Then it will create the gemset when you enter the directory if it does not exist. (read more here: http://rvm.beginrescueend.com/gemsets/ )

    I am currently talking with Yehuda about the feasibility of adding Bundler into RVM for gem management by default as well as adding `rvm bundle ` to iterate against all or selected installs.

    Awesome writeup Mikel!!!

    ~Wayne
  16. Mikel Lindsaar Says:

    Thanks for the tip Wayne :) Thanks for RVM too!

  17. JohnM Says:

    Great tips! thanks – I needed that – you just pushed me far enough to now (finally) go look at RVM.

    By-the-way: I think that should be “good-bye incompatible gems…” – took two reads of that sentence to realize what you meant.
    Thanks!

  18. Sohan Says:

    Your post is linked at www.DrinkRails.com drink#26

  19. Mikl Says:

    @John thanks for the typo spotting, fixed :)

  20. Daniel Says:

    If you want an app to have it’s own gemset, it’s smoother just to do this:

    cd railsdir && bundle install vendor/bundle

    That also makes a railsdir/.bundle file where the bundle stuff is specified specifically for that dir. Check it in to your repo, and you’re set.

  21. tabegamfk Says:

    That also makes a railsdir/.bundle file where the bundle stuff is specified specifically for that dir. Check it in to your repo, and you’re set.

  22. essay writer Says:

    make sure that you get on our schedule early in the year. if you are planning a spring or summer painting,

  23. jauy11 Says:

    I was surfing net and fortunately came across this site and found very interesting stuff here. Its really fun to read. I enjoyed a lot. Thanks for sharing this wonderful information.
    meeting room table

  24. michigan photo booth Says:

    I am currently learning how to use Rail and this bundle will be useful in the future when I learn how to use now.

  25. vintage cameo lockets Says:

    Rail is such a fun code to learn and use because its very versatile

  26. barcode system Says:

    I realy like this article. This is a hash of default values for any email you send, in this case we are setting from the header to a value for all messages in this class, this can be overridden on a per email basis..

    Mesin Kasir | Komputer Kasir | Jual Barcode | Printer Kasir

    Printer Kartu

  27. retail system Says:

    Nice Article, I feel strongly that love and read more on this topic. it’s very spectaculer.

    Mesin Kasir | Komputer Kasir | Jual Barcode | Printer Kasir

    Printer Kartu

  28. aminah Says:

    Ddependency management and the bundle sanity help me in the dress shop and we are also specialize in bride dresses.

  29. lindyt. Says:

    thanks for the `rails tip and the bundles needed.
    online chemist uk
    I like learning new PHP tips

  30. Phil Says:

    You make me look like a star programmer, many thanks for the tips on this. Kymaro Jeans
    In the long run, this will save me many many hours!

  31. free online messages Says:

    Make sure it in to your birthday messages rope, and you’re position

  32. free online messages Says:

    Make sure it in to your birthday messages rope, and you’re position

  33. Rockstar Says:

    Make sure it in to your birthday messages rope, and you’re position

  34. sms message Says:

    I can’t imagine being any where near as productive without the RVM and bundler team.

  35. aminah Says:

    Ddependency management and the bundle sanity help me in the dress shop and we are also specialize in bride dresses.

  36. Marc Grabanski Says:

    Thanks for your article, after reading it took me a while to learn the whole process of using rvm with bundler in the best way, so I took time to write out more detailed instructions for managing gems with RVM and Bundler. I hope that helps someone. Also check out eddorre’s version and a nice tip from Brian on auto-creating gemsets with .rvmrc.

  37. Paul Says:

    This is what I was thinking about with regard to website hosting and I have to agree with all your points hostgator discount code

  38. jay11 Says:

    i read a lot of stuff and i found that the way of writing to clearifing that exactly want to say was very good so i am impressed and ilike to come again in future..
    project

  39. Darrell Says:

    Greetings! Very helpful advice in this particular article!

    It’s the little changes which will make the most significant changes. Thanks a lot for sharing!

  40. mic1122 Says:

    Positive site, where did u come up with the information on this posting?I have read a few of the articles on your website now, and I really like your style. Thanks a million and please keep up the effective work.
    Relationship Tips by Nick Pullar

  41. prince Says:

    This blog is really great. The information here will surely be of some help to me. Thanks!.
    Relationship Issues With Diet Krishna

  42. online dating ukraine Says:

    Nice to be here and see your post! Your blog make me learn a lot! online dating ukraine

  43. srinarax Says:

    The website is looking bit flashy and it catches the visitors eyes. Design is pretty simple and a good user friendly interface.PS3 Emulator

  44. online dating ukraine Says:

    Nice to be here and see your post!

  45. online dating ukraine Says:

    Nice to be here and see your post! Your blog make me learn a lot! online dating ukraine

  46. Paul Says:

    This is what I was thinking about with regard to website hosting and I have to agree with all your points hostgator discount code

  47. MrEmo Says:

    I love your blog. Very nice colors & theme. Did you create this website yourself? Please reply back as I’m looking to create my own blog and would like to know where u got this from. Thanks!Xbox Emulator

  48. Mayweather vs Guerrero fight Says:

    An unidentified spokesman for Pyongyang’s Foreign Mayweather vs Guerrero accuses Guerrero vs Mayweather of WWE WrestleMania 2013 in Mayweather vs Guerrero Live conspiracy Floyd Mayweather vs Robert Guerrerowarfare rPacquiao Mayweather Tickets epresented Samsung Galaxy S4 clash Jailbreak Ipod Touch Download nerves Mayweather the Super Bowl 2014 was SuperBowl 2014up SuperBowl 2014 Tickets Turkey, Super Bowl 2014 Tickets to Super Bowl Tickets and Super bowl 2014 to  Superbowl 2014 11 Super bowl Tickets in Super bowl 2014 Live same Super bowl 2014 but Superbowl Live Center anywhere Super bowl Live Centerthe Mayweather vs Pacquiao Fight Mayweather vs listing Pacquiao Mayweather Pacquiao Versus Mayweather Mayweather Versus Pacquiao Mayweather and Pacquiao Pacquiao And Mayweather before

  49. Iopasda Says:

    i like professionals working on this site

  50. Richard1122 Says:

    Exactly, you’re very kind of us about comment!.
    Chihuahua

  51. http://gto120dlaocm402mfos02.com Says:

    Woah! I’m really enjoying the template/theme of this website. It’s simple,
    yet effective. A lot of times it’s difficult to get that “perfect balance” between superb usability and appearance. I must say you’ve done a
    superb job with this. Additionally, the blog loads very quick for me on Chrome.

    Superb Blog!

  52. hostgator promo code Says:

    from where to get i more information

    promo codes 2013

  53. sean189 Says:

    Great post. bean bags It’s good to see you to verbalize your heart and your clarity on this important issue can be easily detected. chairs Looking forward to read more. furniture this site|this site sofa

Leave a Reply