by Steven J. Owens (unless otherwise attributed)
So, I'm working on my little android project, and it has a web-based part.
Initially I'd cobbled together something extremely rudimentary in PHP, but I was looking at dealing with a lot of boilerplate, so I started looking into PHP frameworks. Symfony looks cool, but it reminds me a lot of ruby on rails, and that's when the lightbulb lit up - this is a very conventional and pretty simple, little, web app, so why not do it in RoR as a learning project?
I already have a mysql schema I've roughed out, and the rest is just some simple forms and queries for viewing/editing the database. I'll keep the schema and sample data and do the rest from scratch.
Step one, I need ruby. Normally I'd start down the path of using apt to install ruby, etc, but I remember that during my last stab at this, various conflicts and version issues reared their ugly heads. It looks like the ruby community doesn't give much love to debian/ubuntu repos, and vice versa. That appears to still be true, sigh.
Last time I ended up manually installing the prerequisites for RVM, the ruby environment manager, and then using that to install ruby and rails:
http://www.darksleep.com/notablog/articles/Installing_Rails_On_UbuntuThis time there's rbenv, which is supposed to be somewhat better, not to mention easier to install, so I'm going to give that a try.
Based on:
https://gist.github.com/2706272 http://deangerber.com/blog/2012/05/30/install-ruby-on-ubuntu-using-rbenv/I'm doing all of the following inside my "overweb" project directory. Overweb is my hokey working title for the project. Shell prompts are in blue, everything I actually type is in bold.
Let's start by pre-installing the dependencies for ruby and rails.
Note: in the line below you should also include more packages to
support whichever database you want to use: libmysqlclient-dev
libyaml-dev for mysql and sqlite3 libsqlite3-dev. Note
that these are in addition to installing the mysql server if you
want to use mysql. I already had mysql installed, so I don't have to
install it.
I'm leaving the error in here because a) I don't feel like ripping it
all out and re-running this command with the extra two packages and b)
so that people who run into this problem and hit google can find this
page, but the full command should read:
puff@redbitter:~/overweb$ sudo aptitude install build-essential libreadline-dev libssl-dev zlib1g-dev libxml2-dev libxslt-dev git-core gitg tmux sqlite3 libsqlite3-dev libmysqlclient-dev libyaml-dev
TL;DR: If you're cut-and-pasting, don't use the aptitude install command immediately below, use the one immediately above. And then you can skip over all the mysql/sqlite3 error stuff below.
We now return you to your regularly scheduled error:
puff@redbitter:~/overweb$ sudo aptitude install build-essential libreadline-dev libssl-dev zlib1g-dev libxml2-dev libxslt-dev git-core gitg tmux
Note: selecting "libxslt1-dev" instead of the
virtual package "libxslt-dev"
The following NEW packages will be installed:
git-core gitg libreadline-dev libreadline6-dev{a} libtinfo-dev{a}
libxml2-dev libxslt1-dev tmux
0 packages upgraded, 8 newly installed, 0 to remove and 143 not upgraded.
Need to get 515 kB/2,252 kB of archives. After unpacking 8,259 kB will be used.
Do you want to continue? [Y/n/?] y
Get: 1 http://us.archive.ubuntu.com/ubuntu/ precise/main tmux amd64 1.6-1ubuntu1 [224 kB]
Get: 2 http://us.archive.ubuntu.com/ubuntu/ precise/main git-core all 1:1.7.9.5-1 [1,384 B]
Get: 3 http://us.archive.ubuntu.com/ubuntu/ precise/universe gitg amd64 0.2.4-0ubuntu1 [290 kB]
Fetched 515 kB in 0s (719 kB/s)
debconf: unable to initialize frontend: Dialog
debconf: (Dialog frontend will not work on a dumb terminal, an emacs shell buffer, or without a controlling terminal.)
debconf: falling back to frontend: Readline
Selecting previously unselected package tmux.
(Reading database ... 716728 files and directories currently installed.)
Unpacking tmux (from .../tmux_1.6-1ubuntu1_amd64.deb) ...
Selecting previously unselected package git-core.
Unpacking git-core (from .../git-core_1%3a1.7.9.5-1_all.deb) ...
Selecting previously unselected package gitg.
Unpacking gitg (from .../gitg_0.2.4-0ubuntu1_amd64.deb) ...
Selecting previously unselected package libtinfo-dev.
Unpacking libtinfo-dev (from .../libtinfo-dev_5.9-4_amd64.deb) ...
Selecting previously unselected package libreadline6-dev.
Unpacking libreadline6-dev (from .../libreadline6-dev_6.2-8_amd64.deb) ...
Selecting previously unselected package libreadline-dev.
Unpacking libreadline-dev (from .../libreadline-dev_6.2-8_amd64.deb) ...
Selecting previously unselected package libxml2-dev.
Unpacking libxml2-dev (from .../libxml2-dev_2.7.8.dfsg-5.1ubuntu4.3_amd64.deb) ...
Selecting previously unselected package libxslt1-dev.
Unpacking libxslt1-dev (from .../libxslt1-dev_1.1.26-8ubuntu1.2_amd64.deb) ...
Processing triggers for man-db ...
debconf: unable to initialize frontend: Dialog
debconf: (Dialog frontend will not work on a dumb terminal, an emacs shell buffer, or without a controlling terminal.)
debconf: falling back to frontend: Readline
Processing triggers for hicolor-icon-theme ...
Processing triggers for gnome-menus ...
Processing triggers for bamfdaemon ...
Rebuilding /usr/share/applications/bamf.index...
Processing triggers for desktop-file-utils ...
Processing triggers for libglib2.0-0 ...
Processing triggers for install-info ...
Processing triggers for doc-base ...
Processing 1 added doc-base file...
Registering documents with scrollkeeper...
Setting up tmux (1.6-1ubuntu1) ...
Setting up git-core (1:1.7.9.5-1) ...
Setting up gitg (0.2.4-0ubuntu1) ...
Setting up libtinfo-dev (5.9-4) ...
Setting up libreadline6-dev (6.2-8) ...
Setting up libreadline-dev (6.2-8) ...
Setting up libxml2-dev (2.7.8.dfsg-5.1ubuntu4.3) ...
Setting up libxslt1-dev (1.1.26-8ubuntu1.2) ...
puff@redbitter:~/overweb$ ssh-keygen -t rsa -C "youremail@yourdomain.com"
Generating public/private rsa key pair.
Enter file in which to save the key (/home/puff/.ssh/id_rsa):
Enter passphrase (empty for no passphrase): Your passphrase here
Enter same passphrase again: Your passphrase here
Your identification has been saved in /home/puff/.ssh/id_rsa.
Your public key has been saved in /home/puff/.ssh/id_rsa.pub.
The key fingerprint is:
a6:fe:ca:d5:70:22:02:54:94:d7:81:89:23:61:55:79 myemail@mydomain.com
The key's randomart image is:
+--[ RSA 2048]----+
| +=++.=.. |
| o. + = E |
| .. o . |
| . |
| . . S . |
| . + = |
| . . . |
| o . |
| +o. |
+-----------------+
puff@redbitter:~/overweb$ git config --global user.name "Steven J. Owens"
puff@redbitter:~/overweb$ git config --global user.email myemail@mydomain.com
puff@redbitter:~/overweb$ git config --global core.editor emacs
puff@redbitter:~/overweb$ git config --global color.ui true
git config --global color.status.changed yellow
git config --global color.status.added green
git config --global color.status.untracked red
puff@redbitter:~/overweb$
puff@redbitter:~/overweb$ git config --list
user.name=Steven J. Owens
user.email=myemail@mydomain.com
core.editor=emacs
color.ui=true
color.status.changed=yellow
color.status.added=green
color.status.untracked=red
puff@redbitter:~/overweb$ git clone git://github.com/sstephenson/rbenv.git ~/.rbenv
Cloning into '/home/puff/.rbenv'...
remote: Counting objects: 1456, done.
remote: Compressing objects: 100% (616/616), done.
remote: Total 1456 (delta 938), reused 1306 (delta 811)
Receiving objects: 100% (1456/1456), 209.16 KiB, done.
Resolving deltas: 100% (938/938), done.
puff@redbitter:~/overweb$ echo 'export PATH="$HOME/.rbenv/bin:$PATH"' >> ~/.bashrc
puff@redbitter:~/overweb$ echo 'eval "$(rbenv init -)"' >> ~/.bashrc
puff@redbitter:~/overweb$ exec $SHELL
puff@redbitter:~/overweb$ mkdir -p ~/.rbenv/plugins
puff@redbitter:~/overweb$ cd ~/.rbenv/plugins
puff@redbitter:~/.rbenv/plugins$ git clone git://github.com/sstephenson/ruby-build.git
Cloning into 'ruby-build'...
remote: Counting objects: 1453, done.
remote: Compressing objects: 100% (636/636), done.
remote: Total 1453 (delta 758), reused 1351 (delta 665)
Receiving objects: 100% (1453/1453), 161.29 KiB, done.
Resolving deltas: 100% (758/758), done.
puff@redbitter:~/.rbenv/plugins$ rbenv install 1.9.3-p194
Downloading yaml-0.1.4.tar.gz...
-> http://dqw8nmjcqpjn7.cloudfront.net/36c852831d02cf90508c29852361d01b
Installing yaml-0.1.4...
Installed yaml-0.1.4 to /home/puff/.rbenv/versions/1.9.3-p194
Downloading ruby-1.9.3-p194.tar.gz...
-> http://dqw8nmjcqpjn7.cloudfront.net/bc0c715c69da4d1d8bd57069c19f6c0e
Installing ruby-1.9.3-p194...
Installed ruby-1.9.3-p194 to /home/puff/.rbenv/versions/1.9.3-p194
puff@redbitter:~/.rbenv/plugins$ cd ~/overweb
puff@redbitter:~/overweb$ rbenv versions
1.9.3-p194
puff@redbitter:~/overweb$ rbenv global 1.9.3-p194
puff@redbitter:~/overweb$ irb
irb(main):001:0> quit
puff@redbitter:~/overweb$
Okay, so now I have rbenv and ruby, now I need to install rails.
https://gist.github.com/2980504puff@redbitter:~/overweb$ gem i bundler rails Fetching: bundler-1.2.3.gem (100%) Successfully installed bundler-1.2.3 Fetching: i18n-0.6.1.gem (100%) Fetching: multi_json-1.5.0.gem (100%) Fetching: activesupport-3.2.11.gem (100%) Fetching: builder-3.0.4.gem (100%) Fetching: activemodel-3.2.11.gem (100%) Fetching: rack-1.4.4.gem (100%) Fetching: rack-cache-1.2.gem (100%) Fetching: rack-test-0.6.2.gem (100%) Fetching: journey-1.0.4.gem (100%) Fetching: hike-1.2.1.gem (100%) Fetching: tilt-1.3.3.gem (100%) Fetching: sprockets-2.2.2.gem (100%) Fetching: erubis-2.7.0.gem (100%) Fetching: actionpack-3.2.11.gem (100%) Fetching: arel-3.0.2.gem (100%) Fetching: tzinfo-0.3.35.gem (100%) Fetching: activerecord-3.2.11.gem (100%) Fetching: activeresource-3.2.11.gem (100%) Fetching: mime-types-1.19.gem (100%) Fetching: polyglot-0.3.3.gem (100%) Fetching: treetop-1.4.12.gem (100%) Fetching: mail-2.4.4.gem (100%) Fetching: actionmailer-3.2.11.gem (100%) Fetching: rack-ssl-1.3.3.gem (100%) Fetching: thor-0.17.0.gem (100%) Fetching: railties-3.2.11.gem (100%) Fetching: rails-3.2.11.gem (100%) Successfully installed i18n-0.6.1 Successfully installed multi_json-1.5.0 Successfully installed activesupport-3.2.11 Successfully installed builder-3.0.4 Successfully installed activemodel-3.2.11 Successfully installed rack-1.4.4 Successfully installed rack-cache-1.2 Successfully installed rack-test-0.6.2 Successfully installed journey-1.0.4 Successfully installed hike-1.2.1 Successfully installed tilt-1.3.3 Successfully installed sprockets-2.2.2 Successfully installed erubis-2.7.0 Successfully installed actionpack-3.2.11 Successfully installed arel-3.0.2 Successfully installed tzinfo-0.3.35 Successfully installed activerecord-3.2.11 Successfully installed activeresource-3.2.11 Successfully installed mime-types-1.19 Successfully installed polyglot-0.3.3 Successfully installed treetop-1.4.12 Successfully installed mail-2.4.4 Successfully installed actionmailer-3.2.11 Successfully installed rack-ssl-1.3.3 Successfully installed thor-0.17.0 Successfully installed railties-3.2.11 Successfully installed rails-3.2.11 28 gems installed Installing ri documentation for bundler-1.2.3... Installing ri documentation for i18n-0.6.1... Installing ri documentation for multi_json-1.5.0... Installing ri documentation for activesupport-3.2.11... Installing ri documentation for builder-3.0.4... Installing ri documentation for activemodel-3.2.11... Installing ri documentation for rack-1.4.4... Installing ri documentation for rack-cache-1.2... Installing ri documentation for rack-test-0.6.2... Installing ri documentation for journey-1.0.4... Installing ri documentation for hike-1.2.1... Installing ri documentation for tilt-1.3.3... Installing ri documentation for sprockets-2.2.2... Installing ri documentation for erubis-2.7.0... Installing ri documentation for actionpack-3.2.11... Installing ri documentation for arel-3.0.2... Installing ri documentation for tzinfo-0.3.35... Installing ri documentation for activerecord-3.2.11... Installing ri documentation for activeresource-3.2.11... Installing ri documentation for mime-types-1.19... Installing ri documentation for polyglot-0.3.3... Installing ri documentation for treetop-1.4.12... Installing ri documentation for mail-2.4.4... Installing ri documentation for actionmailer-3.2.11... Installing ri documentation for rack-ssl-1.3.3... Installing ri documentation for thor-0.17.0... Installing ri documentation for railties-3.2.11... Installing ri documentation for rails-3.2.11... file 'lib' not found Installing RDoc documentation for bundler-1.2.3... Installing RDoc documentation for i18n-0.6.1... Installing RDoc documentation for multi_json-1.5.0... Installing RDoc documentation for activesupport-3.2.11... Installing RDoc documentation for builder-3.0.4... Installing RDoc documentation for activemodel-3.2.11... Installing RDoc documentation for rack-1.4.4... Installing RDoc documentation for rack-cache-1.2... Installing RDoc documentation for rack-test-0.6.2... Installing RDoc documentation for journey-1.0.4... Installing RDoc documentation for hike-1.2.1... Installing RDoc documentation for tilt-1.3.3... Installing RDoc documentation for sprockets-2.2.2... Installing RDoc documentation for erubis-2.7.0... Installing RDoc documentation for actionpack-3.2.11... Installing RDoc documentation for arel-3.0.2... Installing RDoc documentation for tzinfo-0.3.35... Installing RDoc documentation for activerecord-3.2.11... Installing RDoc documentation for activeresource-3.2.11... Installing RDoc documentation for mime-types-1.19... Installing RDoc documentation for polyglot-0.3.3... Installing RDoc documentation for treetop-1.4.12... Installing RDoc documentation for mail-2.4.4... Installing RDoc documentation for actionmailer-3.2.11... Installing RDoc documentation for rack-ssl-1.3.3... Installing RDoc documentation for thor-0.17.0... Installing RDoc documentation for railties-3.2.11... Installing RDoc documentation for rails-3.2.11... file 'lib' not found puff@redbitter:~/overweb$ rbenv rehash
Okay, so now it's time to try out rails. I'm going to make a "version3" subdirectory (version1 and version2 were crude php scripts) and create it in there.
puff@redbitter:~/overweb$ mkdir version3
puff@redbitter:~/overweb$ cd version3/
puff@redbitter:~/overweb/version3$ rails new overshare
create
create README.rdoc
create Rakefile
create config.ru
create .gitignore
create Gemfile
create app
create app/assets/images/rails.png
create app/assets/javascripts/application.js
create app/assets/stylesheets/application.css
create app/controllers/application_controller.rb
create app/helpers/application_helper.rb
create app/views/layouts/application.html.erb
create app/mailers/.gitkeep
create app/models/.gitkeep
create config
create config/routes.rb
create config/application.rb
create config/environment.rb
create config/environments
create config/environments/development.rb
create config/environments/production.rb
create config/environments/test.rb
create config/initializers
create config/initializers/backtrace_silencers.rb
create config/initializers/inflections.rb
create config/initializers/mime_types.rb
create config/initializers/secret_token.rb
create config/initializers/session_store.rb
create config/initializers/wrap_parameters.rb
create config/locales
create config/locales/en.yml
create config/boot.rb
create config/database.yml
create db
create db/seeds.rb
create doc
create doc/README_FOR_APP
create lib
create lib/tasks
create lib/tasks/.gitkeep
create lib/assets
create lib/assets/.gitkeep
create log
create log/.gitkeep
create public
create public/404.html
create public/422.html
create public/500.html
create public/favicon.ico
create public/index.html
create public/robots.txt
create script
create script/rails
create test/fixtures
create test/fixtures/.gitkeep
create test/functional
create test/functional/.gitkeep
create test/integration
create test/integration/.gitkeep
create test/unit
create test/unit/.gitkeep
create test/performance/browsing_test.rb
create test/test_helper.rb
create tmp/cache
create tmp/cache/assets
create vendor/assets/javascripts
create vendor/assets/javascripts/.gitkeep
create vendor/assets/stylesheets
create vendor/assets/stylesheets/.gitkeep
create vendor/plugins
create vendor/plugins/.gitkeep
run bundle install
Fetching gem metadata from https://rubygems.org/...........
Fetching gem metadata from https://rubygems.org/..
Installing rake (10.0.3)
Using i18n (0.6.1)
Using multi_json (1.5.0)
Using activesupport (3.2.11)
Using builder (3.0.4)
Using activemodel (3.2.11)
Using erubis (2.7.0)
Using journey (1.0.4)
Using rack (1.4.4)
Using rack-cache (1.2)
Using rack-test (0.6.2)
Using hike (1.2.1)
Using tilt (1.3.3)
Using sprockets (2.2.2)
Using actionpack (3.2.11)
Using mime-types (1.19)
Using polyglot (0.3.3)
Using treetop (1.4.12)
Using mail (2.4.4)
Using actionmailer (3.2.11)
Using arel (3.0.2)
Using tzinfo (0.3.35)
Using activerecord (3.2.11)
Using activeresource (3.2.11)
Using bundler (1.2.3)
Installing coffee-script-source (1.4.0)
Installing execjs (1.4.0)
Installing coffee-script (2.2.0)
Using rack-ssl (1.3.3)
Installing json (1.7.6) with native extensions
Installing rdoc (3.12)
Using thor (0.17.0)
Using railties (3.2.11)
Installing coffee-rails (3.2.2)
Installing jquery-rails (2.2.0)
Using rails (3.2.11)
Installing sass (3.2.5)
Installing sass-rails (3.2.6)
Installing sqlite3 (1.3.7) with native extensions
Gem::Installer::ExtensionBuildError: ERROR: Failed to build gem native extension.
/home/puff/.rbenv/versions/1.9.3-p194/bin/ruby extconf.rb
checking for sqlite3.h... no
sqlite3.h is missing. Try 'port install sqlite3 +universal'
or 'yum install sqlite-devel' and check your shared library search path (the
location where your sqlite3 shared library is located).
*** extconf.rb failed ***
Could not create Makefile due to some reason, probably lack of
necessary libraries and/or headers. Check the mkmf.log file for more
details. You may need configuration options.
Provided configuration options:
--with-opt-dir
--without-opt-dir
--with-opt-include
--without-opt-include=${opt-dir}/include
--with-opt-lib
--without-opt-lib=${opt-dir}/lib
--with-make-prog
--without-make-prog
--srcdir=.
--curdir
--ruby=/home/puff/.rbenv/versions/1.9.3-p194/bin/ruby
--with-sqlite3-dir
--without-sqlite3-dir
--with-sqlite3-include
--without-sqlite3-include=${sqlite3-dir}/include
--with-sqlite3-lib
--without-sqlite3-lib=${sqlite3-dir}/lib
--enable-local
--disable-local
Gem files will remain installed in /home/puff/.rbenv/versions/1.9.3-p194/lib/ruby/gems/1.9.1/gems/sqlite3-1.3.7 for inspection.
Results logged to /home/puff/.rbenv/versions/1.9.3-p194/lib/ruby/gems/1.9.1/gems/sqlite3-1.3.7/ext/sqlite3/gem_make.out
An error occurred while installing sqlite3 (1.3.7), and Bundler cannot continue.
Make sure that `gem install sqlite3 -v '1.3.7'` succeeds before bundling.
Well, the problem here is that a) rails is defaulting to sqlite3 and b) sqlite3 isn't installed and c) I didn't tell rails I wanted overshare to use mysql.
I'm going to use mysql, but first let's install sqlite3 anyway, so we can play around with sqlite3 rails apps if we want to.
puff@redbitter:~/overweb$ sudo aptitude install sqlite3 The following NEW packages will be installed: sqlite3 0 packages upgraded, 1 newly installed, 0 to remove and 143 not upgraded. Need to get 26.8 kB of archives. After unpacking 174 kB will be used. Get: 1 http://us.archive.ubuntu.com/ubuntu/ precise-updates/main sqlite3 amd64 3.7.9-2ubuntu1.1 [26.8 kB] Fetched 26.8 kB in 0s (130 kB/s) debconf: unable to initialize frontend: Dialog debconf: (Dialog frontend will not work on a dumb terminal, an emacs shell buffer, or without a controlling terminal.) debconf: falling back to frontend: Readline Selecting previously unselected package sqlite3. (Reading database ... 716179 files and directories currently installed.) Unpacking sqlite3 (from .../sqlite3_3.7.9-2ubuntu1.1_amd64.deb) ... Processing triggers for man-db ... debconf: unable to initialize frontend: Dialog debconf: (Dialog frontend will not work on a dumb terminal, an emacs shell buffer, or without a controlling terminal.) debconf: falling back to frontend: Readline Setting up sqlite3 (3.7.9-2ubuntu1.1) ... puff@redbitter:~/overweb$
Now let's make a test rails sqlite3 app, just to see if that fixed the problem. It has to be "test1" because "test" is a reserved rails word and rails won't let you use a reserved word for a project name:
puff@redbitter:~/overweb/tmp$ rails new test1
create
create README.rdoc
create Rakefile
create config.ru
create .gitignore
create Gemfile
create app
create app/assets/images/rails.png
create app/assets/javascripts/application.js
create app/assets/stylesheets/application.css
create app/controllers/application_controller.rb
create app/helpers/application_helper.rb
create app/views/layouts/application.html.erb
create app/mailers/.gitkeep
create app/models/.gitkeep
create config
create config/routes.rb
create config/application.rb
create config/environment.rb
create config/environments
create config/environments/development.rb
create config/environments/production.rb
create config/environments/test.rb
create config/initializers
create config/initializers/backtrace_silencers.rb
create config/initializers/inflections.rb
create config/initializers/mime_types.rb
create config/initializers/secret_token.rb
create config/initializers/session_store.rb
create config/initializers/wrap_parameters.rb
create config/locales
create config/locales/en.yml
create config/boot.rb
create config/database.yml
create db
create db/seeds.rb
create doc
create doc/README_FOR_APP
create lib
create lib/tasks
create lib/tasks/.gitkeep
create lib/assets
create lib/assets/.gitkeep
create log
create log/.gitkeep
create public
create public/404.html
create public/422.html
create public/500.html
create public/favicon.ico
create public/index.html
create public/robots.txt
create script
create script/rails
create test/fixtures
create test/fixtures/.gitkeep
create test/functional
create test/functional/.gitkeep
create test/integration
create test/integration/.gitkeep
create test/unit
create test/unit/.gitkeep
create test/performance/browsing_test.rb
create test/test_helper.rb
create tmp/cache
create tmp/cache/assets
create vendor/assets/javascripts
create vendor/assets/javascripts/.gitkeep
create vendor/assets/stylesheets
create vendor/assets/stylesheets/.gitkeep
create vendor/plugins
create vendor/plugins/.gitkeep
run bundle install
Fetching gem metadata from https://rubygems.org/...........
Fetching gem metadata from https://rubygems.org/..
Using rake (10.0.3)
Installing i18n (0.6.4)
Using multi_json (1.6.1)
Using activesupport (3.2.11)
Using builder (3.0.4)
Using activemodel (3.2.11)
Using erubis (2.7.0)
Using journey (1.0.4)
Using rack (1.4.5)
Using rack-cache (1.2)
Using rack-test (0.6.2)
Using hike (1.2.1)
Installing tilt (1.3.4)
Using sprockets (2.2.2)
Using actionpack (3.2.11)
Using mime-types (1.21)
Using polyglot (0.3.3)
Using treetop (1.4.12)
Using mail (2.4.4)
Using actionmailer (3.2.11)
Using arel (3.0.2)
Installing tzinfo (0.3.36)
Using activerecord (3.2.11)
Using activeresource (3.2.11)
Using bundler (1.2.3)
Installing coffee-script-source (1.6.1)
Using execjs (1.4.0)
Using coffee-script (2.2.0)
Using rack-ssl (1.3.3)
Using json (1.7.7)
Installing rdoc (3.12.2)
Using thor (0.17.0)
Using railties (3.2.11)
Using coffee-rails (3.2.2)
Using jquery-rails (2.2.1)
Using rails (3.2.11)
Using sass (3.2.6)
Using sass-rails (3.2.6)
Installing sqlite3 (1.3.7) with native extensions
Gem::Installer::ExtensionBuildError: ERROR: Failed to build gem native extension. /home/puff/.rbenv/versions/1.9.3-p194/bin/ruby extconf.rb
checking for sqlite3.h... no
sqlite3.h is missing. Try 'port install sqlite3 +universal'
or 'yum install sqlite-devel' and check your shared library search path (the
location where your sqlite3 shared library is located).
** extconf.rb failed **
Could not create Makefile due to some reason, probably lack of
necessary libraries and/or headers. Check the mkmf.log file for more
details. You may need configuration options.
Provided configuration options:
--with-opt-dir
--without-opt-dir
--with-opt-include
--without-opt-include=${opt-dir}/include
--with-opt-lib
--without-opt-lib=${opt-dir}/lib
--with-make-prog
--without-make-prog
--srcdir=.
--curdir
--ruby=/home/puff/.rbenv/versions/1.9.3-p194/bin/ruby
--with-sqlite3-dir
--without-sqlite3-dir
--with-sqlite3-include
--without-sqlite3-include=${sqlite3-dir}/include
--with-sqlite3-lib
--without-sqlite3-lib=${sqlite3-dir}/lib
--enable-local
--disable-local
Gem files will remain installed in /home/puff/.rbenv/versions/1.9.3-p194/lib/ruby/gems/1.9.1/gems/sqlite3-1.3.7 for inspection.
Results logged to /home/puff/.rbenv/versions/1.9.3-p194/lib/ruby/gems/1.9.1/gems/sqlite3-1.3.7/ext/sqlite3/gem_make.out
An error occurred while installing sqlite3 (1.3.7), and Bundler cannot continue.
Make sure that `gem install sqlite3 -v '1.3.7'` succeeds before bundling.
puff@redbitter:~/overweb/tmp$
Okay, some googling indicates we need libsqlite3-dev:
puff@redbitter:~/overweb/tmp$ sudo aptitude install libsqlite3-dev The following NEW packages will be installed: libsqlite3-dev 0 packages upgraded, 1 newly installed, 0 to remove and 12 not upgraded. Need to get 459 kB of archives. After unpacking 1,340 kB will be used. Get: 1 http://us.archive.ubuntu.com/ubuntu/ precise-updates/main libsqlite3-dev amd64 3.7.9-2ubuntu1.1 [459 kB] Fetched 459 kB in 0s (659 kB/s) debconf: unable to initialize frontend: Dialog debconf: (Dialog frontend will not work on a dumb terminal, an emacs shell buffer, or without a controlling terminal.) debconf: falling back to frontend: Readline Selecting previously unselected package libsqlite3-dev. (Reading database ... 742439 files and directories currently installed.) Unpacking libsqlite3-dev (from .../libsqlite3-dev_3.7.9-2ubuntu1.1_amd64.deb) ...puff@redbitter:~/overweb/tmp$
Now let's delete the old test1 and try again:
puff@redbitter:~/overweb/tmp$ rm -rf test1
puff@redbitter:~/overweb/tmp$ rails new test1
create
create README.rdoc
create Rakefile
create config.ru
create .gitignore
create Gemfile
create app
create app/assets/images/rails.png
create app/assets/javascripts/application.js
create app/assets/stylesheets/application.css
create app/controllers/application_controller.rb
create app/helpers/application_helper.rb
create app/views/layouts/application.html.erb
create app/mailers/.gitkeep
create app/models/.gitkeep
create config
create config/routes.rb
create config/application.rb
create config/environment.rb
create config/environments
create config/environments/development.rb
create config/environments/production.rb
create config/environments/test.rb
create config/initializers
create config/initializers/backtrace_silencers.rb
create config/initializers/inflections.rb
create config/initializers/mime_types.rb
create config/initializers/secret_token.rb
create config/initializers/session_store.rb
create config/initializers/wrap_parameters.rb
create config/locales
create config/locales/en.yml
create config/boot.rb
create config/database.yml
create db
create db/seeds.rb
create doc
create doc/README_FOR_APP
create lib
create lib/tasks
create lib/tasks/.gitkeep
create lib/assets
create lib/assets/.gitkeep
create log
create log/.gitkeep
create public
create public/404.html
create public/422.html
create public/500.html
create public/favicon.ico
create public/index.html
create public/robots.txt
create script
create script/rails
create test/fixtures
create test/fixtures/.gitkeep
create test/functional
create test/functional/.gitkeep
create test/integration
create test/integration/.gitkeep
create test/unit
create test/unit/.gitkeep
create test/performance/browsing_test.rb
create test/test_helper.rb
create tmp/cache
create tmp/cache/assets
create vendor/assets/javascripts
create vendor/assets/javascripts/.gitkeep
create vendor/assets/stylesheets
create vendor/assets/stylesheets/.gitkeep
create vendor/plugins
create vendor/plugins/.gitkeep
run bundle install
Fetching gem metadata from https://rubygems.org/...........
Fetching gem metadata from https://rubygems.org/..
Using rake (10.0.3)
Using i18n (0.6.4)
Using multi_json (1.6.1)
Using activesupport (3.2.11)
Using builder (3.0.4)
Using activemodel (3.2.11)
Using erubis (2.7.0)
Using journey (1.0.4)
Using rack (1.4.5)
Using rack-cache (1.2)
Using rack-test (0.6.2)
Using hike (1.2.1)
Using tilt (1.3.4)
Using sprockets (2.2.2)
Using actionpack (3.2.11)
Using mime-types (1.21)
Using polyglot (0.3.3)
Using treetop (1.4.12)
Using mail (2.4.4)
Using actionmailer (3.2.11)
Using arel (3.0.2)
Using tzinfo (0.3.36)
Using activerecord (3.2.11)
Using activeresource (3.2.11)
Using bundler (1.2.3)
Using coffee-script-source (1.6.1)
Using execjs (1.4.0)
Using coffee-script (2.2.0)
Using rack-ssl (1.3.3)
Using json (1.7.7)
Using rdoc (3.12.2)
Using thor (0.17.0)
Using railties (3.2.11)
Using coffee-rails (3.2.2)
Using jquery-rails (2.2.1)
Using rails (3.2.11)
Using sass (3.2.6)
Using sass-rails (3.2.6)
Installing sqlite3 (1.3.7) with native extensions
Using uglifier (1.3.0)
Your bundle is complete! Use `bundle show [gemname]` to see where a bundled gem is installed.
puff@redbitter:~/overweb/tmp$
Yay! It works!
Time to get back to the job at hand, let's create the new rails app as a mysql app:
puff@redbitter:~/overweb/tmp$ cd ..
puff@redbitter:~/overweb$ rails new overshare -d mysql
exist
identical README.rdoc
identical Rakefile
identical config.ru
identical .gitignore
conflict Gemfile
Overwrite /home/puff/overweb/overshare/Gemfile? (enter "h" for help) [Ynaqdh] y
force Gemfile
exist app
identical app/assets/images/rails.png
identical app/assets/javascripts/application.js
identical app/assets/stylesheets/application.css
identical app/controllers/application_controller.rb
identical app/helpers/application_helper.rb
identical app/views/layouts/application.html.erb
identical app/mailers/.gitkeep
identical app/models/.gitkeep
exist config
identical config/routes.rb
identical config/application.rb
identical config/environment.rb
exist config/environments
identical config/environments/development.rb
identical config/environments/production.rb
identical config/environments/test.rb
exist config/initializers
identical config/initializers/backtrace_silencers.rb
identical config/initializers/inflections.rb
identical config/initializers/mime_types.rb
conflict config/initializers/secret_token.rb
Overwrite /home/puff/overweb/overshare/config/initializers/secret_token.rb? (enter "h" for help) [Ynaqdh] y
force config/initializers/secret_token.rb
identical config/initializers/session_store.rb
identical config/initializers/wrap_parameters.rb
exist config/locales
identical config/locales/en.yml
identical config/boot.rb
conflict config/database.yml
Overwrite /home/puff/overweb/overshare/config/database.yml? (enter "h" for help) [Ynaqdh] Y
force config/database.yml
exist db
identical db/seeds.rb
exist doc
identical doc/README_FOR_APP
exist lib
exist lib/tasks
identical lib/tasks/.gitkeep
exist lib/assets
identical lib/assets/.gitkeep
exist log
identical log/.gitkeep
exist public
identical public/404.html
identical public/422.html
identical public/500.html
identical public/favicon.ico
identical public/index.html
identical public/robots.txt
exist script
identical script/rails
exist test/fixtures
identical test/fixtures/.gitkeep
exist test/functional
identical test/functional/.gitkeep
exist test/integration
identical test/integration/.gitkeep
exist test/unit
identical test/unit/.gitkeep
identical test/performance/browsing_test.rb
identical test/test_helper.rb
exist tmp/cache
exist tmp/cache/assets
exist vendor/assets/javascripts
identical vendor/assets/javascripts/.gitkeep
exist vendor/assets/stylesheets
identical vendor/assets/stylesheets/.gitkeep
exist vendor/plugins
identical vendor/plugins/.gitkeep
run bundle install
Fetching gem metadata from https://rubygems.org/...........
Fetching gem metadata from https://rubygems.org/..
Using rake (10.0.3)
Using i18n (0.6.1)
Using multi_json (1.5.0)
Using activesupport (3.2.11)
Using builder (3.0.4)
Using activemodel (3.2.11)
Using erubis (2.7.0)
Using journey (1.0.4)
Using rack (1.4.4)
Using rack-cache (1.2)
Using rack-test (0.6.2)
Using hike (1.2.1)
Using tilt (1.3.3)
Using sprockets (2.2.2)
Using actionpack (3.2.11)
Using mime-types (1.19)
Using polyglot (0.3.3)
Using treetop (1.4.12)
Using mail (2.4.4)
Using actionmailer (3.2.11)
Using arel (3.0.2)
Using tzinfo (0.3.35)
Using activerecord (3.2.11)
Using activeresource (3.2.11)
Using bundler (1.2.3)
Using coffee-script-source (1.4.0)
Using execjs (1.4.0)
Using coffee-script (2.2.0)
Using rack-ssl (1.3.3)
Using json (1.7.6)
Using rdoc (3.12)
Using thor (0.17.0)
Using railties (3.2.11)
Using coffee-rails (3.2.2)
Using jquery-rails (2.2.0)
Installing mysql2 (0.3.11) with native extensions
Gem::Installer::ExtensionBuildError: ERROR: Failed to build gem native extension.
/home/puff/.rbenv/versions/1.9.3-p194/bin/ruby extconf.rb
checking for rb_thread_blocking_region()... yes
checking for rb_wait_for_single_fd()... yes
checking for mysql_query() in -lmysqlclient... no
checking for main() in -lm... yes
checking for mysql_query() in -lmysqlclient... no
checking for main() in -lz... yes
checking for mysql_query() in -lmysqlclient... no
checking for main() in -lsocket... no
checking for mysql_query() in -lmysqlclient... no
checking for main() in -lnsl... yes
checking for mysql_query() in -lmysqlclient... no
checking for main() in -lmygcc... no
checking for mysql_query() in -lmysqlclient... no
*** extconf.rb failed ***
Could not create Makefile due to some reason, probably lack of
necessary libraries and/or headers. Check the mkmf.log file for more
details. You may need configuration options.
Provided configuration options:
--with-opt-dir
--without-opt-dir
--with-opt-include
--without-opt-include=${opt-dir}/include
--with-opt-lib
--without-opt-lib=${opt-dir}/lib
--with-make-prog
--without-make-prog
--srcdir=.
--curdir
--ruby=/home/puff/.rbenv/versions/1.9.3-p194/bin/ruby
--with-mysql-config
--without-mysql-config
--with-mysql-dir
--without-mysql-dir
--with-mysql-include
--without-mysql-include=${mysql-dir}/include
--with-mysql-lib
--without-mysql-lib=${mysql-dir}/lib
--with-mysqlclientlib
--without-mysqlclientlib
--with-mlib
--without-mlib
--with-mysqlclientlib
--without-mysqlclientlib
--with-zlib
--without-zlib
--with-mysqlclientlib
--without-mysqlclientlib
--with-socketlib
--without-socketlib
--with-mysqlclientlib
--without-mysqlclientlib
--with-nsllib
--without-nsllib
--with-mysqlclientlib
--without-mysqlclientlib
--with-mygcclib
--without-mygcclib
--with-mysqlclientlib
--without-mysqlclientlib
Gem files will remain installed in /home/puff/.rbenv/versions/1.9.3-p194/lib/ruby/gems/1.9.1/gems/mysql2-0.3.11 for inspection.
Results logged to /home/puff/.rbenv/versions/1.9.3-p194/lib/ruby/gems/1.9.1/gems/mysql2-0.3.11/ext/mysql2/gem_make.out
An error occurred while installing mysql2 (0.3.11), and Bundler cannot continue.
Make sure that `gem install mysql2 -v '0.3.11'` succeeds before bundling.
puff@redbitter:~/overweb$
The mysql2 bit is misleading, that's the name of the mysql gem for rails, not mysql itself. We need the mysql client dev packages so we'll have headers, so ruby can build the mysql2 gem, which is the ruby adapter for mysql.
puff@redbitter:~/overweb$ sudo aptitude install libmysqlclient-dev libyaml-dev The following NEW packages will be installed: libmysqlclient-dev libyaml-dev The following packages will be upgraded: libmysqlclient18 mysql-common 2 packages upgraded, 2 newly installed, 0 to remove and 141 not upgraded. Need to get 2,424 kB of archives. After unpacking 5,897 kB will be used. Do you want to continue? [Y/n/?] y Get: 1 http://us.archive.ubuntu.com/ubuntu/ precise-updates/main mysql-common all 5.5.29-0ubuntu0.12.04.1 [13.5 kB] Get: 2 http://us.archive.ubuntu.com/ubuntu/ precise-updates/main libmysqlclient18 amd64 5.5.29-0ubuntu0.12.04.1 [946 kB] Get: 3 http://us.archive.ubuntu.com/ubuntu/ precise-updates/main libmysqlclient-dev amd64 5.5.29-0ubuntu0.12.04.1 [1,394 kB] Get: 4 http://us.archive.ubuntu.com/ubuntu/ precise/main libyaml-dev amd64 0.1.4-2 [69.9 kB] Fetched 2,424 kB in 1s (1,705 kB/s) debconf: unable to initialize frontend: Dialog debconf: (Dialog frontend will not work on a dumb terminal, an emacs shell buffer, or without a controlling terminal.) debconf: falling back to frontend: Readline (Reading database ... 716184 files and directories currently installed.) Preparing to replace mysql-common 5.5.28-0ubuntu0.12.04.3 (using .../mysql-common_5.5.29-0ubuntu0.12.04.1_all.deb) ... Unpacking replacement mysql-common ... Preparing to replace libmysqlclient18 5.5.28-0ubuntu0.12.04.3 (using .../libmysqlclient18_5.5.29-0ubuntu0.12.04.1_amd64.deb) ... Unpacking replacement libmysqlclient18 ... Selecting previously unselected package libmysqlclient-dev. Unpacking libmysqlclient-dev (from .../libmysqlclient-dev_5.5.29-0ubuntu0.12.04.1_amd64.deb) ... Selecting previously unselected package libyaml-dev. Unpacking libyaml-dev (from .../libyaml-dev_0.1.4-2_amd64.deb) ... Processing triggers for man-db ... debconf: unable to initialize frontend: Dialog debconf: (Dialog frontend will not work on a dumb terminal, an emacs shell buffer, or without a controlling terminal.) debconf: falling back to frontend: Readline Setting up mysql-common (5.5.29-0ubuntu0.12.04.1) ... Setting up libmysqlclient18 (5.5.29-0ubuntu0.12.04.1) ... Setting up libmysqlclient-dev (5.5.29-0ubuntu0.12.04.1) ... Setting up libyaml-dev (0.1.4-2) ... Processing triggers for libc-bin ... ldconfig deferred processing now taking placeCurrent status: 141 updates [-2]. puff@redbitter:~/overweb$
Okay, so it should work this time. First let's clean up the leftovers from the last attempt:
puff@redbitter:~/overweb$ cd version3 puff@redbitter:~/overweb/version3$ rm -rf overshare puff@redbitter:~/overweb/version3$
And now let's try yet again.
puff@redbitter:~/overweb/version3$ rails new overshare -d mysql
create
create README.rdoc
create Rakefile
create config.ru
create .gitignore
create Gemfile
create app
create app/assets/images/rails.png
create app/assets/javascripts/application.js
create app/assets/stylesheets/application.css
create app/controllers/application_controller.rb
create app/helpers/application_helper.rb
create app/views/layouts/application.html.erb
create app/mailers/.gitkeep
create app/models/.gitkeep
create config
create config/routes.rb
create config/application.rb
create config/environment.rb
create config/environments
create config/environments/development.rb
create config/environments/production.rb
create config/environments/test.rb
create config/initializers
create config/initializers/backtrace_silencers.rb
create config/initializers/inflections.rb
create config/initializers/mime_types.rb
create config/initializers/secret_token.rb
create config/initializers/session_store.rb
create config/initializers/wrap_parameters.rb
create config/locales
create config/locales/en.yml
create config/boot.rb
create config/database.yml
create db
create db/seeds.rb
create doc
create doc/README_FOR_APP
create lib
create lib/tasks
create lib/tasks/.gitkeep
create lib/assets
create lib/assets/.gitkeep
create log
create log/.gitkeep
create public
create public/404.html
create public/422.html
create public/500.html
create public/favicon.ico
create public/index.html
create public/robots.txt
create script
create script/rails
create test/fixtures
create test/fixtures/.gitkeep
create test/functional
create test/functional/.gitkeep
create test/integration
create test/integration/.gitkeep
create test/unit
create test/unit/.gitkeep
create test/performance/browsing_test.rb
create test/test_helper.rb
create tmp/cache
create tmp/cache/assets
create vendor/assets/javascripts
create vendor/assets/javascripts/.gitkeep
create vendor/assets/stylesheets
create vendor/assets/stylesheets/.gitkeep
create vendor/plugins
create vendor/plugins/.gitkeep
run bundle install
Fetching gem metadata from https://rubygems.org/...........
Fetching gem metadata from https://rubygems.org/..
Using rake (10.0.3)
Using i18n (0.6.1)
Using multi_json (1.5.0)
Using activesupport (3.2.11)
Using builder (3.0.4)
Using activemodel (3.2.11)
Using erubis (2.7.0)
Using journey (1.0.4)
Using rack (1.4.4)
Using rack-cache (1.2)
Using rack-test (0.6.2)
Using hike (1.2.1)
Using tilt (1.3.3)
Using sprockets (2.2.2)
Using actionpack (3.2.11)
Using mime-types (1.19)
Using polyglot (0.3.3)
Using treetop (1.4.12)
Using mail (2.4.4)
Using actionmailer (3.2.11)
Using arel (3.0.2)
Using tzinfo (0.3.35)
Using activerecord (3.2.11)
Using activeresource (3.2.11)
Using bundler (1.2.3)
Using coffee-script-source (1.4.0)
Using execjs (1.4.0)
Using coffee-script (2.2.0)
Using rack-ssl (1.3.3)
Using json (1.7.6)
Using rdoc (3.12)
Using thor (0.17.0)
Using railties (3.2.11)
Using coffee-rails (3.2.2)
Using jquery-rails (2.2.0)
Installing mysql2 (0.3.11) with native extensions
Using rails (3.2.11)
Using sass (3.2.5)
Using sass-rails (3.2.6)
Installing uglifier (1.3.0)
Your bundle is complete! Use `bundle show [gemname]` to see where a bundled gem is installed.
puff@redbitter:~/overweb/version3$
Yay, it worked. That's enough for now, next time I'll start actually building a ruby app.
* Comparing Rails sqlite3 and mysql
Okay, just to see, let's compare a sqlite3 and a mysql rails app.
Since I don't want a zillion differences in the project names, I'll make two subdirectories, named sqlite3 and mysql, move the sqlite3 test1 app I created above into the sqlite3 subdirectory, and create a second, mysql rails app named test1 in the mysql subdirectory.
puff@redbitter:~/overweb/tmp$ mkdir sqlite3
puff@redbitter:~/overweb/tmp$ mkdir mysql
puff@redbitter:~/overweb/tmp$ mv test1 sqlite3
puff@redbitter:~/overweb/tmp$ cd mysql
puff@redbitter:~/overweb/tmp/mysql$ rails new test1 -d mysql
create
create README.rdoc
create Rakefile
create config.ru
create .gitignore
create Gemfile
create app
create app/assets/images/rails.png
create app/assets/javascripts/application.js
create app/assets/stylesheets/application.css
create app/controllers/application_controller.rb
create app/helpers/application_helper.rb
create app/views/layouts/application.html.erb
create app/mailers/.gitkeep
create app/models/.gitkeep
create config
create config/routes.rb
create config/application.rb
create config/environment.rb
create config/environments
create config/environments/development.rb
create config/environments/production.rb
create config/environments/test.rb
create config/initializers
create config/initializers/backtrace_silencers.rb
create config/initializers/inflections.rb
create config/initializers/mime_types.rb
create config/initializers/secret_token.rb
create config/initializers/session_store.rb
create config/initializers/wrap_parameters.rb
create config/locales
create config/locales/en.yml
create config/boot.rb
create config/database.yml
create db
create db/seeds.rb
create doc
create doc/README_FOR_APP
create lib
create lib/tasks
create lib/tasks/.gitkeep
create lib/assets
create lib/assets/.gitkeep
create log
create log/.gitkeep
create public
create public/404.html
create public/422.html
create public/500.html
create public/favicon.ico
create public/index.html
create public/robots.txt
create script
create script/rails
create test/fixtures
create test/fixtures/.gitkeep
create test/functional
create test/functional/.gitkeep
create test/integration
create test/integration/.gitkeep
create test/unit
create test/unit/.gitkeep
create test/performance/browsing_test.rb
create test/test_helper.rb
create tmp/cache
create tmp/cache/assets
create vendor/assets/javascripts
create vendor/assets/javascripts/.gitkeep
create vendor/assets/stylesheets
create vendor/assets/stylesheets/.gitkeep
create vendor/plugins
create vendor/plugins/.gitkeep
run bundle install
Fetching gem metadata from https://rubygems.org/...........
Fetching gem metadata from https://rubygems.org/..
Using rake (10.0.3)
Using i18n (0.6.4)
Using multi_json (1.6.1)
Using activesupport (3.2.11)
Using builder (3.0.4)
Using activemodel (3.2.11)
Using erubis (2.7.0)
Using journey (1.0.4)
Using rack (1.4.5)
Using rack-cache (1.2)
Using rack-test (0.6.2)
Using hike (1.2.1)
Using tilt (1.3.4)
Using sprockets (2.2.2)
Using actionpack (3.2.11)
Using mime-types (1.21)
Using polyglot (0.3.3)
Using treetop (1.4.12)
Using mail (2.4.4)
Using actionmailer (3.2.11)
Using arel (3.0.2)
Using tzinfo (0.3.36)
Using activerecord (3.2.11)
Using activeresource (3.2.11)
Using bundler (1.2.3)
Using coffee-script-source (1.6.1)
Using execjs (1.4.0)
Using coffee-script (2.2.0)
Using rack-ssl (1.3.3)
Using json (1.7.7)
Using rdoc (3.12.2)
Using thor (0.17.0)
Using railties (3.2.11)
Using coffee-rails (3.2.2)
Using jquery-rails (2.2.1)
Using mysql2 (0.3.11)
Using rails (3.2.11)
Using sass (3.2.6)
Using sass-rails (3.2.6)
Using uglifier (1.3.0)
Your bundle is complete! Use `bundle show [gemname]` to see where a bundled gem is installed.
puff@redbitter:~/overweb/tmp/mysql$ cd ..
puff@redbitter:~/overweb/tmp$
And now let's do a recursive diff and compare the two rails apps. First let's just --brief so diff just tells us files are different:
puff@redbitter:~/overweb/tmp$ diff --brief -r sqlite3/ mysql/ Files sqlite3/test1/config/database.yml and mysql/test1/config/database.yml differ Files sqlite3/test1/config/initializers/secret_token.rb and mysql/test1/config/initializers/secret_token.rb differ Files sqlite3/test1/Gemfile and mysql/test1/Gemfile differ Files sqlite3/test1/Gemfile.lock and mysql/test1/Gemfile.lock differ puff@redbitter:~/overweb/tmp$
Okay, to see all the differences you just re-run the diff command without the --brief:
puff@redbitter:~/overweb/tmp$ diff -r sqlite3/ mysql/
But I'm going to break up the output by file and look at each one.
For stars, we can skip secret_token.rb, obviously each app will have a different generated secret toke value.
The Gemfile and Gemfile.lock seem straightforward enough; of course the two different types of apps need different gems for sqlite3 vs mysql:
diff -r sqlite3/test1/Gemfile mysql/test1/Gemfile 8c8 < gem 'sqlite3' --- > gem 'mysql2'
diff -r sqlite3/test1/Gemfile.lock mysql/test1/Gemfile.lock 55a56 > mysql2 (0.3.11) 92d92 < sqlite3 (1.3.7) 108a109 > mysql2 111d111 < sqlite3
Besides that, the big difference is in the database.yml:
diff -r sqlite3/test1/config/database.yml mysql/test1/config/database.yml 1,2c1,4 < # SQLite version 3.x < # gem install sqlite3 --- > # MySQL. Versions 4.1 and 5.0 are recommended. > # > # Install the MYSQL driver > # gem install mysql2 4,5c6,10 < # Ensure the SQLite 3 gem is defined in your Gemfile < # gem 'sqlite3' --- > # Ensure the MySQL gem is defined in your Gemfile > # gem 'mysql2' > # > # And be sure to use new-style password hashing: > # http://dev.mysql.com/doc/refman/5.0/en/old-client.html v7,8c12,15 < adapter: sqlite3 < database: db/development.sqlite3 --- > adapter: mysql2 > encoding: utf8 > reconnect: false > database: test1_development 10c17,19 < timeout: 5000 --- > username: root > password: > socket: /var/run/mysqld/mysqld.sock 16,17c25,28 < adapter: sqlite3 < database: db/test.sqlite3 --- > adapter: mysql2 > encoding: utf8 > reconnect: false > database: test1_test 19c30,32 < timeout: 5000 --- > username: root > password: > socket: /var/run/mysqld/mysqld.sock 22,23c35,38 < adapter: sqlite3 < database: db/production.sqlite3 --- > adapter: mysql2 > encoding: utf8 > reconnect: false > database: test1_production 25c40,42 < timeout: 5000 --- > username: root > password: > socket: /var/run/mysqld/mysqld.sock
So, nothing revolutionary, but it's nice to see how well rails insulates you from the two different databases.