Soar with Merb-Core and Merb-More (0.9) 5
I haven’t been around in awhile, frankly because I’ve had my own things to attend to… but I’ve felt somewhat ashamed that I’ve left my kind Kinetic audience a float. So here is another “Up and Running” treat. Cloning Merb-core and -more, from Git[hub] to dummy project.
BTW, it should be any day now for the official 0.9 release. Rumors have it that Ezra will be releasing it at ActsAsConference.
Preperation
Your going to want to remove any old gems in the following list, as you will be installing trunk versions in this tutorial.
merb (< 0.9)
merb_datamapper (< 0.9)
merb_helpers (< 0.9)
datamapper (< 0.3.0)You can go ahead and gem install the following. I’ve listed the version numbers I use currently.
sqlite3-ruby (1.2.1)
data_objects (0.2.0)
do_sqlite3 (0.2.3)
do_mysql(0.2.2)
rack (0.2.0)Along with the regular Merb dependencies listed in the API.
# gem install mongrel json json_pure erubis mime-types rspec hpricot mocha rubigen haml markaby mailfactory Ruby2Ruby -yThats a lotta gems right? Well, taking a closer look you should have most of these already… and if you don’t you should.
Installing Git
You installed it already, otherwise… EPIC FAIL!
You DO have a Github account
If you have a Github account, you’ll most likely want to fork merb-core and merb-more so you have your own fork’s to mess about with. If you find anything interesting you can always submit a bug/patch and help the wonderful Merb team out! Or start building some new framework forked from Merb. Either way…
To do this, login to Github and…
http://github.com/wycats/merb-core/fork
http://github.com/wycats/merb-more/fork
http://github.com/wycats/merb-plugins/forkYou’ll then want to clone these like the next section…
You DON’T have a Github account
If you don’t have an account yet for Github you’ll still need Git installed like I noted above. From within a fresh directory in Terminal run the following commands.
# git clone git://github.com/wycats/merb-core.git
# git clone git://github.com/wycats/merb-more.git
# git clone git://github.com/wycats/merb-plugins.gitInstalling these Git forks/clones
Simply enter the directories “merb-core” and “merb-more” and run…
# sudo rake installYou’ll also want to do this under “merb-plugins/merb_datamapper” and “merb-plugins/merb_helpers”. Including any others in “merb-plugins” you would like installed.
Installing Datamapper Trunk
Currently, Datamapper is still under SVN. I’m positive this will change in the near future. But for now…
# svn co http://datamapper.rubyforge.org/svn/trunk/ data_mapperThen simply go into the data_mapper/ directory created and do…
# sudo rake installMerb-gen is your Friend?
I’ve just recently discovered that they’ve changed, yet again, the default way of creating a new Merb project. I guess because “merb -g” or “merb” was getting annoying, so “merb-gen [projectname]” is some how much simpler. You also use this to generate models/controllers/resources/etc… :/
I’m going to take another guess and say this is somehow based on the project directory no longer needing to conform to a certain structure like Rails. I’ve heard this, but I haven’t tested it out for fact… so let me know your experiences.
Either way…
# merb-gen lovely-appGoing into Toshi Station to pick up some power converters
This is where it starts to get exciting. The fruit of our labors dance in unison to form a euphoric aura called “0.9”... not so fast though.
1. If your not already, make sure your in the “lovely-app/” project directory.
2. Open up “config/init.rb” and uncomment…
use_orm :datamapperRspec should be your testing framework by default.
3. Back in your shell, run…
# rake --tasks4. This should auto-generate “config/database.sample.yml“
5. Overwrite the entire thing with the following, and save as “config/database.yml”...
---
:development: &build
:adapter: sqlite3
:database: db/dev.db
:test:
<<: *build
:database: db/test.db
:production:
:adapter: mysql
:database: lovely_app
:username: root
:password: ""6. Your going to now want to create those sqlite databases. If not both just db/dev.db.
# mkdir db/
# sqlite3 db/dev.db
SQLite version 3.5.1
Enter ".help" for instructions
sqlite> .databases
seq name file
--- --------------- ----------------------------------------------------------
0 main /Users/bionicebonics/lovely-app/db/dev.db
sqlite> .quitYou should be able to run a successful “rake—tasks” if you did everything correctly. You may also want to test and see if you can run the daemon, and pull up a browser window. Run “merb” by itself from Merb.root or project root directory.
In short, just start hacking! Reference the API for help, not me.
The Sugar
You should now have a base process for exploring Merb 0.9 development.
The Salt
If for some weird reason your getting errors running “merb”, make sure you removed any old versions of Merb <= 0.5.x.
Also try uninstalling merb-core and reinstalling it from a new Git clone of the main repo. I had to do this for some odd reason whilst running through this tutorial.
Shameless Kinetic/PhillyOnRails
Colin will be giving a talk on Merb at our local PhillyOnRails Users Group, so stay tuned for info on that.
Update
Gotta love Merb integrating Rack/WSGI!
Following a few discussions on the Thin webserver mailing list, I just tried Merb on Thin… this is working out excellent! I’ve also heard that Ezra just got 2200 req/sec using Thin.
If you would like to explore the possibilities of this incredibly fast setup, simply do…
# sudo gem install thin
# cd lovely-app
# merb -a thinThis will load Merb on Thin. If you don’t know about Thin, I’m not going to sit here and explain it. I’m just not like that. You’ll have to FOFY, find-out-for-yourself.
Hosting Git Repo's [cross post]
Just to not let my adoring Git followers down, since I have yet to write my next Git article… Garry Dolley over at http://scie.nti.st has an excellent article on Hosting Git repositories, The Easy (and Secure) Way.
Now I understand he uses Python, but lets face it, so does Git. Also, its only an excuse some Rubyists use for not learning that wonderful sister language.
Enjoy, and let me know your success/failures… or just never visit this site and keep reading our wonderful articles through NetNewsWire or what-have-you.
Compiling Git for Mac OS X Leopard (10.5) 2
The following is the exact compilation steps I took for compiling Git onto the new retail version of Leopard. Definitely a big change since my previous article on installing in Tiger (next to pre-installed SVN, bye bye CVS!)...
Commandscurl -O http://surfnet.dl.sourceforge.net/sourceforge/expat/expat-2.0.1.tar.gz
tar zxvf expat-2.0.1.tar.gz
cd expat-2.0.1
./configure --prefix=/usr/local
make
make check
sudo make install
cd ..
curl -O http://kernel.org/pub/software/scm/git/git-1.5.3.4.tar.bz2
tar jxvf git-1.5.3.4.tar.bz2
cd git-1.5.3.4
make prefix=/usr/local all
make prefix=/usr/local test && echo $?
sudo make prefix=/usr/local install
cd ..
curl -O http://www.kernel.org/pub/software/scm/git/git-manpages-1.5.3.4.tar.bz2
sudo tar xjv -C /usr/local/man -f git-manpages-1.5.3.4.tar.bz2Notes
You may need to adjust your default MANPATH environment variable. You can either apply something along the lines of…
export MANPATH="/usr/local/man:$MANPATH"...to your .bash_login, profile or what have you. Or you can look into editing /private/etc/man.conf (or un-tar the manpages into a directory in your MANPATH already).
Also, no need to fiddle around with SVN bindings for Perl, or whatever the problem was with git-svn before.
You may also wish to surf our past articles hear on this blog for upgrading Git. The upgrading should be identical on Leopard.
Next Time
My next article will cover developing outside of a traditional distributed Git environment. Using Git to manage personal branching/merging/local copies, then committing to a main SVN repo. Happy hacking.
Updates on Git use in Mac OS X (Tiger)
Note: This article is still on using Git under Tiger (10.4.10, respectively)... Until I have time to run down to the Apple store tomorrow and do a nice clean install of Leopard onto my Macbook, I will not have the appropriate means of writing a proper article on Git use under 10.5.
This is for anyone that reads this blog, and used my previous article on compiling Git. I left the proper Git tutorials to the behmouth of external articles out there, on using Git as Rails project/deployment SCM. I’m also a firm believer in DIY, and the same applies to learning new things. Nobody ever taught me a damn subject (completely) in person on anything I use day-to-day… so DIY and…
Since my last article, actually a day ago, Geoffrey Grosenbach over at Peepcode Screencasts released Video 015, on Git. This should really, visually, help out those that are really having problems crasping the simple things in Git. There are other numerous advances in using Git with your Rails applications. So I’ll keep things DRY here…
One thing I will update you with though, a quick and simple way to update your source compiled installation of Git, by using Git’s repository itself.
# git clone git://git.kernel.org/pub/scm/git/git.git
# cd git
# make configure
# ./configure --prefix=/usr/local
# make all doc
# sudo make install install-docYou will now have a completely refreshed version of Git on your system.
Take note, Grosenbach mentions the benefits of having a compiled version of Git on your system. He does not, however, give more than a quick mention that it may be slightly difficult gathering up the proper dependency chain onto your system. That was what my previous article was for.
Enjoy, and let me know how things go for you… justin_at_kineticweb.com.

