Can I "move" my gems while upgrading Ruby 1.8.7->1.9.3 and Rails 3.0->3.2? - ruby-on-rails-3

I am Ruby/Rails beginner, and I am on Windows.
I just used RailsInstaller to upgrade from Rails 3.0.9 to 3.2.3, from Ruby 1.8.7 to 1.9.3. The gems that I installed previously no longer appear when I type gem list. I assume this is normal.
My question is: Is there a way to get all of those gems "into" Ruby 1.9.3 without individually re-installing them?
When I went into an old rails apps and ran bundle install, it appears that a few of my gems were re-installed (the ones in the Gemfile).
Any help would be appreciated. Sorry if I am missing something obvious.

If you're just upgrading to a new version, as long as everything that was in your Gemfile was installed when you ran bundle install then I wouldn't worry about it. Just re-install gems as you need them instead of bloating your system with gems that you don't currently need.
If you have projects that you are porting over to the newer versions of Rails and Ruby, you can just run bundle install as the first step in upgrading the app to make sure its dependencies are installed.
Maybe someone could give you an yes/no answer for transitioning with RailsInstaller, but I'm trending toward using rvm and gemsets to have a cleaner, more focused environment for each project.
If you want to switch back and forth between multiple ruby versions, maybe check out the gem pik. You can use it to install gems on multiple versions of ruby so that they're available across them all.

Related

Railsinstaller with ruby 1.8.7

Can anyone tell me how to install rails in windows7 with ruby 1.8.7.
I recommend installing a ruby version manager such as pik to manage installing a sandboxed 1.8.7 - in particular, look at the readme on the github page for using a msi installer package to install ruby from scratch. A ruby version manager is incredibly handy to have, as it lets you flip back and forth between different rubies, with different installed gems, and, if this is important to you, can install various rubies without requiring admin privileges (to run the installer package for pik may require admin privileges).
From this point, use the standard Ruby tools like gem to install Rails. I recommend installing bundler with gem install bundler, then using bundler to handle the rest of your gem needs, as is detailed in the bundler link and especially here. Bundler is great because it manages your configuration precisely based on a file in the directory; this means multiple projects can have multiple versions of different libraries installed, but Bundler makes sure that the configuration is consitent for each project. You can even move your project (including your bundler Gemfile) to a different computer and run bundle install and it will ensure your other computer is using the exact same versions of the same gems for running your software - great for deployment.

System ruby/gem vs RVM ruby/gem

I installed RVM, read the documentation and do not understand it well. For example, I had an rails application that is created and run just find (before I install RVM) and it uses the system ruby and system gem. Now after I install RVM:
Do I need to re-install these gems into RVM so these gem can be under RVM control?
How to a port the application to use RVM gem instead of system gem?
Is RVM a wrapper for ruby and gem or a separate repository of these ruby and gem? So if I install a gem under RVM, the gem only exist in RVM or exist across RVM and system, or vice versa. Am I duplicating or does RVM and System synchronize their gem/system themselves?
I am still completely confused of the goods and uses of RVM. Now all my previous applications that used to work not doesn't even start with various errors.
My environment: Mac OS X 10.8; Rails 3.2.9; TextMate
Yes. Use bundler and there will be no pain.
It just need to be run in RVM environment. No special porting required.
It is intended to provide separate environment for each of your projects by substituting environment variables like $PATH, $GEM_HOME, $GEM_PATH.
Pros:
You can have different ruby interpreters installed to fulfil your applications' requirements. Imagine that you are starting a new project with Rails 1.9.3, but you are still working on old two which use 1.8.7 and 1.9.1 and have not been ported so far.
Your gems does not conflict with each other. For example Psych has special needs. If you use it, you got to use it in all your project. But with RVM you can create different gemsets for each project.
Moves gem directories too dirs where you got read+write access. This is good because does not force you to compile gems with root privileges.
Cons:
I had problems with RVM when using it for long time under Fish shell. Two times, after some weeks whole RVM went crazy and just get broken. Not going into details, I got to remove whole ~/.rvm directory. Never happened under Bash.
My typical workflow with RVM is following:
Add ruby "1.9.3" or equivalent to Gemfiles of my projects to avoid running it with wrong Ruby version.
Install RVM and install Rubies I need, rvm install 1.9.3.
In given project, rvm use 1.9.3.
Install required gems.
Use my app normally.
Please note I am not using Gemsets. This is because of Cons #1. I really love Fish shell, can't live without it, and bundler alone gives me decent management of Gems (one problem: Psych). To use Gemsets, two additional steps between 3. and 4.:
3a. Create one rvm gemset create gemset1.
3b. Use it rvm use gemset1#1.9.3.
I always use RVM when working with some legacy projects.
Refer to this screencast: http://railscasts.com/episodes/200-rails-3-beta-and-rvm for decent tutorial.

Installing barby barcode generation on ruby on rails

After using several non compatible barcode generators gems in rails 3.2, i am trying to use Barby. But i have no clue on how to install it. No idea if have to include in gemfile? or install as a plugin?
Readme provides no information about it nor the wiki.
Just for anyone still confuse about it, you can put them on Gemfile with gem 'barby' because the Gem was listed on Ruby Gems. Just saying.
Got it: gem install barby. This installs the gem, also its useful to install the wrapper has_barcode. I am currently looking how to use this, but went through install process.

Issues with Rails3.0 vs Rails 3.1

So I finally upgraded (and then downgraded because of Unity) Ubuntu and reinstalled RVM but I'b stuck with rails 3.1 now, which is fine but all my old projects are in rails 3.0 and 3.1 has some incompatibilities. Off the top of my head RAILS_ROOT is now Rails.root (which all my projects use in someway), and I was having some issues with heroku when trying to upload a small rails 3.1 app I made to play around (since the PG gem wasnt in my gemlist I couldnt run migrations, and then installing the pg gem caused more issues).
So how do I install rails 3.0 again? I cant seem to find it in the repositories
And I know with gem sets I can install both right? Well if I do that, how do I create a new rails project? Which version of rails would use rails new new_app?
Ok, I understand what you need to do. I would highly recommend making a new Gemset using RVM, that way you can start from scratch and not worry about those things.
To do that, run this in your command line with RVM installed:
// EDIT THIS LINE TO MATCH WHAT YOU WANT
rvm use 1.9.2-or-which-ever-version-you-are-using#temporary_gemset --create
Once this gemset is created, it will be empty, so you can then proceed to install a younger version of rails, like so:
gem install rails -v 3.0.11 // (MAY NEED TO USE SUDO, DEPENDING ON YOUR SET UP)
This should install the older version of rails and its dependencies so that you can still edit and work with your older rails project. Check more of RVM's site for more help on switching between gemsets and creating them.
https://rvm.io//gemsets/
I would still recommend to figure out the differences eventually and move to the newer version for Rails, currently 3.2.5 because they are awesome. Here is some material to show you the differences and new features for when you do that later:
http://railscasts.com/episodes/265-rails-3-1-overview
http://railscasts.com/episodes/282-upgrading-to-rails-3-1
http://railscasts.com/episodes/318-upgrading-to-rails-3-2

Rails rvm: Howto prevent version confusion

When setting up a new Rails project (version >= 3) I would like to prevent version confusion for future team mates by including the rvm "bundle install" in the current git project. Are there any recommended best practices for doing this?
Rails 3 is integrated with Bundler - versions of Gems you use are saved into Gemfile.lock file and they will be available for everyone else using your project. bundle install will give your teammates the same versions of Gems that you have installed, so if I understand your question correctly you don't have to do anything above what Rails already gives you.