Installing a gem fork from Github source
Usually, installing a gem is as easy as issuing:
gem install gem_name
but, what if you want to install a fork of a gem?
As you may know Github no longer hosts gems, so doing the following won't work:
$ sudo gem install technoweenie-grit --source http://gems.github.com
NOTE: Actually it'd work if the gem you're trying to install is in this list: http://gems.github.com/list.html
Disecting the "Download Source" button
Let's suppose we want to install the Techno Weenie's fork of Grit from Github:
Main repo => http://github.com/mojombo/grit
Techno Weenie's fork => http://github.com/technoweenie/grit
Github has a "Download Source" button, if you click it you'll be presented with two big images (say buttons): "ZIP" and "TAR", clicking these buttons will start downloading the code of the master branch in the selected format; below those buttons you'll find the list of tags of the repository, you'll be able to click one of the tags and again you'll be presented with "ZIP" and "TAR" to download the source of such tag.
How does this works?
This is how the URL is built:
http://github.com/USER/REPOSITORY/FORMAT/BRANCH_OR_TAG
"ZIP" => http://github.com/technoweenie/grit/zipball/master
"TAR" => http://github.com/technoweenie/grit/tarball/master
said this:
$ wget http://github.com/technoweenie/grit/zipball/master $ unzip technoweenie-grit-v2.0.0-12-g0bd0c5f.zip $ cd technoweenie-grit-0bd0c5f
Installing the gem
Gems source code has a special file called gem_name.gemspec, this is like the DNA of the gem and it's used to build it:
$ gem build grit.gemspec
Issuing this command will generate a gem_name-version.gem file which is the gem itself, let's install it:
$ sudo gem install grit-2.0.0.gem
Some projects doesn't have a .gemspec file but rake tasks, in that case you just need to do:
$ rake build $ rake install
If any of these methods work, you'd have to look at the Rakefile for tasks to generate the .gemspec file.
...and we're done!
NOTE: 'gem build' will not take in consideration special and external dependencies the gem might require, so you must take care of the dependencies manually. Check in the code all the 'require' lines to see dependencies.
Hope it helps.
Does anyone knows an easier method?
Ignoring files in Git
I've realized that there is a general misunderstandig about ignoring files in Git. People often try to ignore changes to tracked files adding them to a .gitignore file, but you should know that Git will ignore files in .gitignore only of the files are not already tracked ("tracked" means that the file is in the repository), but what happen if one add a tracked file to .gitignore? well, nothing happens, Git won't ignore the file and it will continue showing it when one execute git-status. In this post I'll show you how to ignore tracked and untracked files.
1.The gitignore way (to ignore untracked files)
*Create a .gitignore file (the name doesn't matters at all, you can name it whatever name you want)
$vim .git/config #project-specific configuration file $vim ~/.gitconfig #system-wide configuration file (if it doesn't exist, create it)and look for this -> [core], if it doesn't exists, then add it like this:
[core] excludesfile = "the_path_of_your_gitignore_file/.gitignore"2.The assume-unchanged way (to ignore changes in tracked files)
$git update-index --assume-unchanged my_file.rbAfter issuing this command you won't see the changes madde to my_file.rb in git-status. You have to be carefull, because if you issue $git add my_file.rb, Git will add the file to the index.That's it!