Rails4 new application creation - Bundler expecting version MySQL2 3.1.3? - ruby-on-rails-4

I'm starting to experiment with Rails 4 for work where we are using the MySQL2 3.1.0 gem on the server.
Locally with Ruby 2.0, I installed the MySQL2 3.1.0 Gem and everything was fine there (matching the gem version on the work server basically just to match the production server environment).
When I created a new Application (ruby new r4_test -d mysql) I ran into a problem though. Bundler crashed during the new application creation process complaining about missing MySQL2 3.1.3 files. It looks like 3.1.3 (released 3 months ago if I'm looking right) is the highest version number of the MySQL2 Gem. I'm confused about this because the only version of MySQL2 installed in the Ruby folder is version 3.1.0. Why did Bundler ignore the installed gem and expect a higher version that wasn't installed locally? I skipped Rails3 so I'm new to Bundler. It doesn't seem like it should expect a version that's not local though. Sometimes there are bugs or other issues where you need to stay on an older version of a gem for awhile too. ?
Thanks!

If you don't already have a Gemfile.lock in your project directory, Bundler tries to install the most recent version available that meets the version criteria in Gemfile. So, for a new Rails project, it will try to install the latest dependencies of the default generated Gemfile. It doesn't actually look at your installed gems at all unless you already have a Gemfile.lock.
You can use the --skip-bundle (or -B) if you don't want Rails to run bundle install when creating a new project. That gives you a chance to customize the Gemfile first. You can add in a version constraint if you want to be sure it will use the version you already have installed.

Related

Using different Ruby versions with URU

I have just installed URU in order to manage different ruby installs. I am actually upgrading from Ruby 2.16 to 2.26 in order to upgrade my Rails app from Rails 4 to Rails 5.
I have not yet decided to upgrade to Rails 5 but instead using the new ruby version (2.26) to go on developping my current app.
Though when trying to do a rake db:migrate I ended up with a no such file error while reverting to ruby 2.16 the rake db:migrate went successfully.
I have installed this new version with Ruby installer for Windows, skipping the Devkit as it should be the same a for the 2.16 version.
Any idea where the problem comes from ?

I cannot load my 'mysql2' gem.

I am a beginner at Rails and when I typed in 'rails server' in Terminal, I received this error:
Specified 'mysql2' for database adapter, but the gem is not loaded. Add `gem 'mysql2'` to your Gemfile (and ensure its version is at the minimum required by ActiveRecord).
I am using OSX Yosemite 10.10.5. I've tried installing it:
gem install mysql2
It still gave me the same error. I see that mysql2-0.4.0 is installed. Please help, thank you!
There is a bug in Rails 4.2.4 and previous, with the newly released 0.4.0 version of the mysql2 gem -- one part of Rails will accidentally refuse to use the newly released 0.4.0 version of mysql2.
The issue is reported here, although without a lot of details:
https://github.com/rails/rails/issues/21544
Until a new version of Rails is released that fixes this one way or another, add this to your Gemfile, specifying that mysql2 0.4.0 won't work:
# mysql 0.4.0 does not work with Rails 4.2.4
# https://github.com/rails/rails/issues/21544
gem 'mysql2', '>= 0.3.13', '< 0.4.0'
You previously probably just have gem 'mysql2' in your Gemfile -- add the version constraints as above, so it knows 0.4.0 won't work. Add the comments so you know why you did it, and can remove it later when no longer neccesary (probably whenever Rails 4.2.5 comes out).
Edit the Gemfile in your app like above, and then run bundle update mysql2 in your app directory, so your app will be using a mysql2 gem version 0.3.x again, as current Rails version wants.
When Rails 4.2.5 or later comes out and you upgrade to it, you will probably want to go back to your Gemfile and remove the version requirement specification for mysql2, return it to saying just gem 'mysql2' again. So your app will be willing to use the newer mysql2 0.4.0 gem, once Rails is willing to do so too.
add gem 'mysql2' to your Gemfile to specify the gems you want to use in your project
run bundle install which will install all gems, specified by Gemfile
run rails s should work fine

Ruby gems issue with upgrading

I run rails generate controller welcome index
I got the warning
You're using Rubygems 2.0.14 with Spring. Upgrade to at least Rubygems 2.1.0 and run gem pristine --all
I updated gem --system and also added paths into ~/.bashrc, but still same result, is there any suggestion?
Since I had an older Ruby version 2.0 from the past, so it made apache confuse. I could either explicitly telling apache to use which directory, or use RVM (Ruby Version Manager) which do all jobs. Just need to go through these steps:
Install RVM:
rvm get stable --auto-dotfiles
Then tell which version you tend to use:
rvm use 2.2.0
Update gems
gem install rails
Now ready to go!
Go to your Gemfile.lock and change your version of Ruby. That might do it.
What Ruby manager are you using?

rails -version command error in Ubuntu 12.04

I have installed ruby and rails in Ubuntu 12.04. I am trying to create the new project for rails using this command "rails new testApp", but it is giving me the error "/home/dev/.rvm/gems/ruby-2.2.0/bin/rails:23:in `load': cannot load such file -- /home/dev/.rvm/gems/ruby-2.2.0/gems/rails-4.2.0/bin/rails (LoadError)". It is so ugly and pathetic to run the rails in windows so i switched to Ubuntu but here I am again facing difficulties.
Any help will be Appreciated.
Actually i resolved this problem myself because there are no experts i think in domain of ruby on stack overflow but any way i resolved the problem by following the instructions mention below.
1. Uninstalled the rails
2. Uninstalled the ruby
3.Then installed the latest version of ruby using rvm command
rvm install ruby 2.1
4.Then installed the rails using command gem install rails.
It started working
Anyway thanks #johnny and #Mike

How to install sqlite or postgresql on windows 8 for a ruby on rails setup?

I've been trying to install a database as part of my ruby on rails setup.
I'm running a 64 bit windows 8, a x64 based machine.
My ruby version is 2.1.3p242, rails version is 4.0.0, sqlite3 version is 3.8.6 and postgresql version is 9.3
I first tried to install sqlite3 by following the steps given in this SO answer but I get this error
`require': Could not load 'active_record/connection_adapters/sqlite3_adapter'. Make sure that the adapter in config/database.yml is valid.
My database.yml has 'sqlite3' as the value for the adapter key for all three environments.
Next I try to installed postgresql which was installed properly. I fired up the pgadmin3 GUI and started the database server. But when I start the rails server. I get the following error
C:/Ruby21-x64/lib/ruby/gems/2.1.0/gems/pg-0.17.1-x64-mingw32/lib/pg.rb:10:in `re
quire': cannot load such file -- 2.1/pg_ext (LoadError)
Thanks.
You need to use the pre release of pg.
Install
gem install pg -v 0.18.0.pre20141117110243 --pre
Add to your Gem file
gem 'pg', '~> 0.18.0.pre20141117110243'
Update with Bundle
bundle update
If you want to use PostgreSQL you'll need to do 2 things:
Install PostgreSQL on Windows using these instructions
Configure your rails project to use PostgreSQL this way:
rails new todo --database=postgresql
On the related note, if you want to do web development with Ruby on Rails, I recommend you to install Ruby, Gems, Git, Rails and IDE. All instructions are in the Start Programming Now book