Recently I started my adventure with Ruby on Rails using version 2.3.14. When generating a new project, why isn't Rails creating a Gemfile?
Rails 2.3 Doesn't Have Bundler Support
Why? Because it just doesn't. Rails 3 has native Bundler support, but you can add Bundler support to Rails 2.3 by following the step-by-step directions on the Bundler web site.
Roll Your Own
If you just want a Gemfile, rather than Bundler integration with Rails, you can create one easily enough.
gem install bundler
bundle init
Vendor Your Gems
In older versions of Rails, the way to handle gems was to vendor your gems. The old 2.3 version of A Guide to The Rails Command Line may help you, especially the section that covers rake gems:install.
Rails 2.3 doesn't have built-in bundler support because it came out before Bundler.
The Bundler website provides instructions for adding Bundler to Rails 2.3.
In short:
Add a config/preinitializer.rb to set up the bundled environment before Rails is loaded
Update your config/boot.rb to require the bundled gems
Move any config.gem declarations to the Gemfile
Proceed as usual
Related
I currently have Ruby 2.2.6 and Rails 5.0.1 installed on my Windows 10 machine. I have cloned an existing project that has the following settings included in its Gemfile:
# Lock-in Lang and Framework:
ruby '2.2.0'
gem 'rails', '4.2.0'
I'm having a surprisingly hard time figuring out how to get Ruby 2.2.0 and Rails 4.2.0 installed. Ruby has good documentation of different installation options, but I think I've exhausted the Windows options without any success. Here are a couple I tried:
Installers: I couldn't find an option for downloading either from RailsInstaller, RubyInstaller, and Bitnami.
RVM: I tried (unsuccessfully) following this blog post to install cygwin so that I could use RVM, but then saw in the comments that the author now recommends spinning up a linux VM rather that using this method.
Pik and Uru: It appears Pik is no longer maintained, and I couldn't figure how to download new versions and ruby and rails with Uru as opposed to managing already downloaded versions.
EDIT: I also tried simply changing the version numbers for ruby and rails in the Gemfile to 2.2.6 and 5.0.1. When I do this I (very understandably) get a message when I try to use a rails command saying I need to run bundle update rails. When I run that rails update I get the following error: Bundler could not find compatible versions for gem "rack". I've done some googling on that option, and it looks like resolving that issue might be possible but requires some more involved tinkering with my Gemfile configuration.
I think my next option is to install Ruby from the source, but I wanted to throw a question up here first to make sure I'm not missing an easier method. So my question is - is it really this hard to get an older minor release of ruby and rails installed on Windows? I realize that the majority of users are probably looking for the most recent release, but it doesn't seem to me that my use case is terribly unique.
The oldest available Ruby 2.2.x via RubyInstaller is 2.2.1
So, the answer to your question is, "Yes, you'll have to build from source."
But then again,
v2.x of gem "rack" requires at least Ruby v2.2.2
And depending on what other gems are included in your Gemfile, you'll still have to reconfigure your Gemfile to get this app running.
So the best solution is probably to use the latest patch version of Ruby 2.2.x and lock rails to 4.2.x. (The app may not be compatible with Rails 5.x)
# Lock-in Lang and Framework:
ruby '2.2.6'
gem 'rails', '~> 4.2'
Then run bundle install to install all the gems required by the Gemfile
I tried uninstalling Rails 4.1.5 by doing "gem uninstall rails" and then installing Rails 4.0.8 by doing "gem install rails --version 4.0.8". However, now when I try to see what version of Rails I am using by doing "rails -v" I still get "Rails 4.1.5". How do I fix this?
I know I'm a bit late however I am answering in case others need an answer of how to manage gem versions. The linked duplicate question offers a perfectly fine answer to the question but does not give guidance to how to easily manage this long term. I do the following before starting every new project.
First you need rvm to manage ruby versions and create gemsets. With gemsets you can create isolated groups of gems that are project or ruby or rails version specific (it's up to you how you organize yourself).
After installing a version of ruby to use you create a gemset and tell your system to use this version of ruby with this gemset.
Then select the gemset and install the version of rails you want to use into the gemset. You will also need to install bundler into the gemset.
Once you have this setup you can insert the following lines into your rails gem file to tell this project which ruby version, rails version and gemset to use (in my example I am using ruby version 2.1.5 with the gemset named scan and the rails version 4.0.8)
ruby '2.1.5'
#ruby-gemset=scan
gem 'rails', '4.0.8'
Then cd into the rails project directory and run bundle install. Bundler will install the gems from your project's gem file into the selected gemset. Now you have an isolated and stable system for the project. If you have another project with different ruby version, rails version and gemset any changes there will not affect anything here.
For more details on how to setup rvm just go to the website and read the documentation. It's really easy to use and will save you many headaches.
I started to learn Ruby on Rails while ago so now I am going back and starting again. I have found that I do not have rails installed but I do have jewellery box and ruby installed. Will installing the rails installer again effect these or just add rails?
Thanks
You just need to read about bundler. You may have any versions of any gems at the same time using bundler and rails currently (from v 3.0) build on top of bundler.
It will just add rails. You can also have separate gemsets that all contain their own rails installs that can have their own versions and stuff. Short answer though is that it will just add rails.
It depends on rails version in your Gemfile (or when installing via gem install). If version isn't specified then it will be updated to latest after each bundle install.
In addition to specifying the rails version, I would recommend to use RVM (http://rvm.io/) for delimiting different gemsets for different applications.
I am newbie to Rails development and working with Spree Commerce bitnami Stack VM instance. I am trying to install spree extension and the instructions says to make configuration changes to application Gem file which I cannot find in the webserver directory
Running Rails 2.3.5
Spree 0.9.4 version
The reason why you can't find it because Gemfile is a standard from Rails 3+ and you're using a Rails2 app. Rails3 uses Bundler which takes cares about all Gems for your app.
In Rails 2 gem dependency definition is different. It doesn't have Bundler so "bundle install" also won't work in your case.
Instead you need to add Gem dependency to config/environment.rb like this:
config.gem 'your_gem_name_here'
also you need to install the Gem manually, so not like in Rails3 where Bundler installs it. Use this in shell:
gem install your_gem_name
In general it's a good idea to update the app to Rails3, I'd recommend it because as I saw this Gem you wanna use doesn't have earlier release.
I have currently moved to a appplication on rails 2.3.4 and ruby 1.8.7 using rvm.
There are a no of gems installed in the app.When i do gem install gem_name ,it installs it but iam not sure whether the gem version is compatible with my app.The gem versions are not specified in case of many gems listed config/environment.rb.Iam unable to figure out ,how to install the correct version as unable to run the application till now. Any suggestions are welcome..
To provide true gem-consistency in your app, you should consider use Bundler to manage these dependencies. The Gembundler site has a good guide on setup for rails 2.x apps.
Once you have your dependencies in bundler, you can start to work out what is compatible and what isn't. In the case of third-party gems, you can search for them on the RubyGems site, and work out which version was the last to be released before Rails 3.x was released. Of course most gems will just work, but any breaking gems will possibly need to run an older version.
I would use Bundler, and add the gems to the Gemfile. Here is the syntax to use a specific version:
gem 'gem-name', '1.0.4'