[#44310] プログラムに対して意図したとおりの文字列を渡す方法 — "Information Kanasansoft" <kanasansoft@...>

kanasanです。

9 messages 2007/12/05

[#44332] クラス:相互参照系の作成方法について質問です — "Saburoh Sakai" <sabroh@...>

はじめまして、さかいと申します。

12 messages 2007/12/11

[#44366] Rake改善プロジェクト — "Hajime Hoshi" <hajimehoshi@...>

東京大学修士 1 年の星一と申します。

14 messages 2007/12/19

[ruby-list:44376] Re: Rake 改善プロジェクト

From: NISHIMATSU Takeshi <t_nissie@...>
Date: 2007-12-20 21:00:02 UTC
List: ruby-list #44376
西松です。

--- rubikitch@ruby-lang.org wrote:
> > * clobber(「とことん消す」デフォルトのタスク)が恐すぎるので
> >   無効にできる機能が欲しい。
> 
> 極めて強引ですがこれでどうでしょうか?
> Rake::Task[:clobber].instance_eval{@actions = []}

ありがとうございます。
これ、Rakefileのどこに書けばよいのでしょうか。いろいろ試したのですが、
rake clobberでことごとく消えてしまうのを止められません。
具体的には http://rubyforge.org/projects/isi-rb/ の Rakefile です。
最後に添付します。ヒントをいただけたら幸いです。

makeと違ってデフォルトのタスク/ターゲットがあるのがrakeの特徴なのだとは
思いますが、このclobberはお節介以外のなにものでもないです。


> > * どうしてもmakeと打ってしまうので、`GNUmakefile', `makefile',
> >   `Makefile'が見当たらなくて、Rakefileがあったらrakeを起動する
> >   ようにするGNU makeへのパッチ。
> 
> シェル関数かラッパーを作って優先的に実行できるディレクトリに置くとかはどうでしょう?

こんなかんじですかね:
#!/bin/sh
##
if [ -f GNUmakefile -o -f makefile -o -f Makefile ]; then
    make $*
elif [ -f Rakefile ]; then
    rake $*
else
    echo "$0: Neither Makefile nor Rakefile are found."
    exit 1
fi

あと、最近のシェルは
$ make [TAB][TAB]
とすると、Makefileの中のターゲットまで見てコンプリーションをしてくれます。
rake --tasks まで見てくれるとうれしいなぁ。
たぶん、「Rake改善プロジェクトの範疇外」になっちゃうんでしょうけど。
−−西松タケシ

#! /usr/bin/env rake
# -*-Ruby-*-
# Time-stamp: <2007-08-21 13:17:15 takeshi>
# Author: Takeshi Nishimatsu
##
$LOAD_PATH.unshift('lib')

require 'rubygems'
require 'rake/gempackagetask'
require 'rake/testtask'
require 'rake/rdoctask'
require 'rake/clean'
require 'rake/contrib/rubyforgepublisher'
require 'isi.rb'
require 'archive/tar/minitar'
require 'zlib'

spec = eval(File.read("isi.gemspec"))
spec.version = ISI_RB_VERSION
RDOC_OPTS = %w(--title isi --main README --line-numbers)
spec.rdoc_options = RDOC_OPTS
ISI_PACKAGE_DIR = '..'
CLEAN.include('html')

desc "Build the RubyGem for isi"
task :gem => [ :test ]
Rake::GemPackageTask.new(spec) do |g|
  g.need_tar    = true
  g.need_zip    = true
  g.package_dir = ISI_PACKAGE_DIR
end

task :default => [ :test ]

desc "Run the unit and functional tests"
task :test
Rake::TestTask.new do |t|
  t.test_files = FileList['tests/*.rb']
  t.verbose = true
end

Rake::RDocTask.new do |rdoc|
  rdoc.rdoc_dir = 'html'
  rdoc.options = RDOC_OPTS
  if ENV['DOC_FILES']
    rdoc.rdoc_files.include(ENV['DOC_FILES'].split(/,\s*/))
  else
    rdoc.rdoc_files.include('README')
    rdoc.rdoc_files.include('lib/**/*.rb')
  end
end

desc "Build Packages"
task :package => [ :rdoc, :isi_version_rb ]

desc "Publish to RubyForge"
task :rubyforge => [ :rdoc ] do
  Rake::RubyForgePublisher.new('isi-rb', 't-nissie').upload
end

desc "Copy lib/isi.rb ../isi-X.Y.Z.rb"
task :isi_version_rb do
  FileUtils.copy_file('lib/isi.rb', ISI_PACKAGE_DIR + '/isi-' + ISI_RB_VERSION + '.rb')
end




In This Thread