class Rim
Rim
a super simple ruby project / gem manager¶ ↑
Goal is to have a project managing that just works on many Ruby versions as possible and is easy to extend. Feel free to dislike it. ;)
Constants
- VERSION
Attributes
Encoding of spell checked files (default: ‘UTF-8’)
Files to check via aspell (default: /^README/i, /^Changelog/i)
Language for aspell (default: ‘en’)
File to store the word list of the project (default: ‘./.aspell.pws’)
Git push commands (default: ['--tags origin master']
)
Required files for irb (default: Rim#name)
Directory for rdoc output
RDoc files (default: /README(.rdoc)?/i
, lib/*\/
)
Main file for RDoc (default: /README(.rdoc)?/i
)
ALL regtest files incl. sample files, results files and maybe other files (default: REGTEST_FILES
)
Sample files (Ruby files) for regtest (default: REGTEST_FILES_RB
)
RSpec files (default: 'spec/*/.rb')
Require dirs for tests (default: %w(lib spec)
)
Flag if task regtest is invoked before releasing this means it is a precondition for tasks prepare_release and release (default: true
)
Test files (default: 'test/*/.rb')
Require dirs for tests (default: %w(lib test)
)
Verbose option for test task (default true
)
Warning option for test task (default true
)
Public Class Methods
The block is executed after setup is completed. Useful when writing rim extensions. At execution time the Rim
instance is complete initialized.
# File lib/rim.rb, line 51 def self.after_setup(&blk) @definitions << blk end
# File lib/rim.rb, line 83 def self.attr_accessor attr attr_writer attr self.class_eval "def #{attr}(arg=nil); arg.nil? ? @#{attr} : @#{attr} = arg; end" end
Setting the default values of attributes. Useful when writing Rim
extensions. The block is evaluated in Rim.instance when no parameter is used. Otherwise the method yields Rim.instance.
# File lib/rim.rb, line 25 def self.defaults(&blk) rim = Rim.instance if blk.arity < 1 rim.instance_eval(&blk) else yield rim end end
# File lib/rim.rb, line 90 def self.execute_definitions @definitions.each do |blk| Rim.instance.instance_eval(&blk) end end
Setting up Rim
. This method is usual used in Rakefiles to setting the project specific values of the Rim
instance. The block is evaluated in Rim.instance when no parameter is used. Otherwise the method yields Rim.instance.
# File lib/rim.rb, line 38 def self.setup(&blk) rim = Rim.instance if blk.arity < 1 rim.instance_eval(&blk) else yield rim end execute_definitions end
Public Instance Methods
# File lib/rim/aspell.rb, line 17 def aspell_errors? fn ! `aspell list --encoding=#{aspell_encoding} -l #{aspell_lang} -p #{aspell_word_list} < #{fn}`.empty? end
Helper method to check if a module is already required Example: feature_loaded?(‘rim/release’)
# File lib/rim.rb, line 77 def feature_loaded? name ! $LOADED_FEATURES.grep(%r((^|/)#{name}\.rb$)).empty? end
Helper method to generate Rake::FileList objects. Main difference between Rake::FileList.new and this method is the possibility to use Regexp objects as parameters.
# File lib/rim.rb, line 63 def filelist(*args) res = FileList.new args.each do |arg| if arg.kind_of?(Regexp) res += FileList.new('**/*').grep(arg) else res += FileList.new(arg) end end res end
# File lib/rim/gemspec.rb, line 18 def gemspec @gemspec ||= eval(File.read(gemspec_file), binding, gemspec_file) end
# File lib/rim/gemspec.rb, line 14 def gemspec_file @gemspec_file ||= Dir['*.gemspec'].first or fail 'no gemspec file found' end
Invoke task name
if defined raise an error otherwise.
# File lib/rim.rb, line 56 def invoke name Rake::Task[name].invoke end