2009-09-24 7 views
1

J'ai appris Ruby récemment, et je ne suis pas encore entré dans les recoins sales de l'apprentissage de Rake. J'ai joué avec NetBeans, et j'ai fait un petit projet Ruby avec un fichier qui imprime simplement "Hello, World!". Je regardais le Rakefile généré par NetBeans, et j'ai remarqué qu'il avait commenté la ligne s.executables, donc j'ai décommissionné, et j'ai essayé de le construire. Bien sûr, il a échoué avec:Comment générer des exécutables dans un gem avec Rake?

Don't know how to build task 'bin/your_executable_here' 

Ce que j'essaie de faire, c'est de comprendre comment faire fonctionner cela. J'ai parcouru les pages et je ne trouve aucune information sur la façon de générer correctement un exécutable. Voici le Rakefile généré par NetBeans:

 
require 'rubygems' 
require 'rake' 
require 'rake/clean' 
require 'rake/gempackagetask' 
require 'rake/rdoctask' 
require 'rake/testtask' 

spec = Gem::Specification.new do |s| 
    s.name = 'Learning' 
    s.version = '0.0.1' 
    s.has_rdoc = true 
    s.extra_rdoc_files = ['README', 'LICENSE'] 
    s.summary = 'Your summary here' 
    s.description = s.summary 
    s.author = '' 
    s.email = '' 
    s.executables = ['your_executable_here'] 
    s.files = %w(LICENSE README Rakefile) + Dir.glob("{bin,lib,spec}/**/*") 
    s.require_path = "lib" 
    s.bindir = "bin" 
end 

Rake::GemPackageTask.new(spec) do |p| 
    p.gem_spec = spec 
    p.need_tar = true 
    p.need_zip = true 
end 

Rake::RDocTask.new do |rdoc| 
    files =['README', 'LICENSE', 'lib/**/*.rb'] 
    rdoc.rdoc_files.add(files) 
    rdoc.main = "README" # page to start on 
    rdoc.title = "Learning Docs" 
    rdoc.rdoc_dir = 'doc/rdoc' # rdoc output folder 
    rdoc.options

Je suis désolé si cela est une question stupide, honnêtement, j'ai essayé de trouver l'information moi-même.

EDIT: Je n'étais pas au courant qu'il devait y avoir un fichier exécutable du même nom que celui que vous spécifiez dans ./bin dans votre projet. J'ai tout compris.

+0

Voulez-vous Netbeans pour exécuter le fichier, ou si vous souhaitez une tâche de râteau qui génère un fichier Ruby exécutable (.bat ou .sh)? – khelll

Répondre

1

Le tableau s.executables doit contenir les noms des fichiers exécutables dans le répertoire bin de votre bijou

s.executables = %w(my_awesome_commandline_churner) 
+0

Correct, il semble que personne ne se soucie de documenter cela très bien. : p – Rayne

+0

Voir: http://docs.rubygems.org/read/chapter/20#executables Aussi, en cas de doute, regardez comment tout le monde le fait. –

1

Ce code est utilisé pour créer un fichier gem. Les gemmes sont les dispositifs de gestion de paquets de Ruby. Certaines gemmes viennent avec des fichiers de script exécutables à exécuter à partir de la ligne de commande. Ils sont placés dans le répertoire ./bin lorsque la gemme est construite, et quand elle est déployée, ils seront copiés dans le même dossier que l'exécutable ruby.

Pour rendre un fichier exécutable, vous devrez ajouter un shabang (#!/User/local/bin/ruby) à la première ligne et changer l'autorisation du fichier pour permettre l'exécution.

+0

Alors, qu'est-ce que je dois faire pour le faire? Il me donne juste que "Je ne sais pas comment créer la tâche 'bin/testexe'" erreur. Suis-je censé mettre le fichier dans le dossier bin par rapport au Rakefile? Parce que j'ai essayé ça, et ça a continué à me donner l'erreur. Je commence à me demander si ce n'est peut-être pas un problème de NetBeans ... – Rayne

+0

Ne vous en faites pas, mon con stupide l'a compris. :\, Merci de votre aide. – Rayne