Nous avons déjà vu comment créer une gem simplement, mais elle ne nous permettait pas de creer des helpers ou d'ajouter du script dans notre asset/. Dans ce post, je vais créer une gem dont j'ai souvent besoin qui m'ajoute les scripts mootools me permettant d'utiliser les fonctionnalités de Bootstrap sans avoir à charger JQuery. Pour commencer nous allons demander au Bundler un petit coup de main.

$ bundle gem bootstrap3_mootools
create  bootstrap3_mootools/Gemfile
create  bootstrap3_mootools/Rakefile
create  bootstrap3_mootools/LICENSE.txt
create  bootstrap3_mootools/README.md
create  bootstrap3_mootools/.gitignore
create  bootstrap3_mootools/bootstrap3_mootools.gemspec
create  bootstrap3_mootools/lib/bootstrap3_mootools.rb
create  bootstrap3_mootools/lib/bootstrap3_mootools/version.rb
Initializing git repo in /home/alain/01_projects/bootstrap3_mootools

Bundle a généré notre gemspec, notre lib, le Gemfile ainsi que le Rafefile; il a initialisé git, créé le .gitignore, le README et pour finir la LICENCE.

Grosso modo il a tout initialisé avec mes informations (mail, auteur) et a balisé les choses à faire avec de jolies %q{TODO: }

# bootstrap3_mootools.gemspec
# coding: utf-8
lib = File.expand_path('../lib', __FILE__)
$LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
require 'bootstrap3_mootools/version'

Gem::Specification.new do |spec|
  spec.name          = "bootstrap3_mootools"
  spec.version       = Bootstrap3Mootools::VERSION
  spec.authors       = ["Alain ANDRE"]
  spec.email         = ["wordsbybird@gmail.com"]
  spec.summary       = %q{TODO: Write a short summary. Required.}
  spec.description   = %q{TODO: Write a longer description. Optional.}
  spec.homepage      = ""
  spec.license       = "MIT"

  spec.files         = `git ls-files -z`.split("\x0")
  spec.executables   = spec.files.grep(%r{^bin/}) { |f| File.basename(f) }
  spec.test_files    = spec.files.grep(%r{^(test|spec|features)/})
  spec.require_paths = ["lib"]

  spec.add_development_dependency "bundler", "~> 1.6"
  spec.add_development_dependency "rake"
end

L'ajout des scripts

# Créer app/assets/javascripts
$ cd bootstrap3_mootools/
$ mkdir -p app/assets/javascripts

Je copie ensuite mes scripts dans ce nouveau dossier et j'ajoute la dépendance railties à la fin de mon gemspec.

# bootstrap3_mootools.gemspec
spec.add_development_dependency "rake"
spec.add_dependency "railties", "~> 4.1"

Voilà ! Je peux construire ma gem et la tester.

$ bundle exec rake build
bootstrap3_mootools 0.0.1 built to pkg/bootstrap3_mootools-0.0.1.gem

Maintenant je vais tester ma gem dans le dossier test en créant une application rails avec mon option -j mootools

$ rails new test/dummy -j mootools
$ cd test/dummy
$ echo 'gem "bootstrap3_mootools", :path =>"../../bootstrap3_mootools/"' >> Gemfile
$ bundle install
$ echo '//= require bootstrap3_mootools' >> app/assets/javascripts/application.js
$ rails server &

Une fois tout ceci fait, je n'ai plus qu'à tester si mon fichier est bien présent dans l'application lancée :

$ curl http://localhost:3000/assets/bootstrap3_mootools.js

Il ne nous reste plus qu'à mettre tout ça à disposition sur github et RubyGems. Si vous n'avez encore jamais envoyé de gems à RubyGems, vous devez y créer un compte et récupérer votre clé :

curl -u Alain_ANDRE https://rubygems.org/api/v1/api_key.yaml > ~/.gem/credentials; chmod 0600 ~/.gem/credentials

Maintenant il est possible de push.

$ rake release

Publié dans les catégories suivantes

ruby
comments powered by Disqus

Téléphone

+33 637 700 504

Adresse

Bordeaux, 33300
France