tweaks 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
data/.gitignore ADDED
@@ -0,0 +1,8 @@
1
+ *.sw?
2
+ .DS_Store
3
+ coverage
4
+ rdoc
5
+ pkg
6
+ *.vpwhistu
7
+ *.vtg
8
+
data/LICENSE ADDED
@@ -0,0 +1,23 @@
1
+ Copyright (c) 2008-2009 Gary McGhee - Buzzware Solutions, Western Australia - gary@buzzware.com.au
2
+
3
+ MIT Licence
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining
6
+ a copy of this software and associated documentation files (the
7
+ "Software"), to deal in the Software without restriction, including
8
+ without limitation the rights to use, copy, modify, merge, publish,
9
+ distribute, sublicense, and/or sell copies of the Software, and to
10
+ permit persons to whom the Software is furnished to do so, subject to
11
+ the following conditions:
12
+
13
+ The above copyright notice and this permission notice shall be
14
+ included in all copies or substantial portions of the Software.
15
+
16
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
17
+ EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
18
+ MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
19
+ NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
20
+ LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
21
+ OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
22
+ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
23
+
data/README.rdoc ADDED
@@ -0,0 +1,77 @@
1
+ = tweaks
2
+
3
+ * Author : Gary McGhee http://www.buzzware.com.au
4
+
5
+ == DESCRIPTION:
6
+
7
+ Tweaks are like tiny gems. In a single file you declare its name and default configuration,
8
+ and implement it. Project specific configuration can be provided seperately in your app, and
9
+ a defined tweak doesn't have to be installed at all.
10
+
11
+ What Tweaks does for you
12
+
13
+ Tweaks provides a minimal framework for implementing, configuring and distributing those
14
+ little pieces of code you develop and collect through developing multiple rails projects.
15
+ A tweak can be developed in the context of a Rails project with minimal friction. When the
16
+ project is delivered (and the pressure is off) you can move the tweak into its own gem or
17
+ copy it to the next Rails project (if you must - not recommended)
18
+
19
+ Why bother ?
20
+
21
+ * to be DRY
22
+
23
+ * to make those little hacks easy to develop during a project, then easily extractable from it for wider use
24
+
25
+ * to share with others
26
+
27
+ Advanced
28
+
29
+ * Tweaks can be moved to another rails app by copying or moving the *_tweak.rb files to a tweaks folder, then adding
30
+ the config to tweaks_config.rb
31
+
32
+ * Multiple tweaks could be stored in your own gem, and then loaded by a rails/init.rb file like the one in this gem
33
+
34
+ == FEATURES/PROBLEMS:
35
+
36
+ * untested with Rails 3
37
+
38
+ == REQUIREMENTS:
39
+
40
+ * tested on MacOS and Linux
41
+
42
+ == INSTALL:
43
+
44
+ > gem install tweaks
45
+ > cd <RAILS_ROOT>
46
+ > script/generate tweak blah
47
+
48
+ Now
49
+
50
+ - Define your tweak in the new file tweaks/blah_tweak.rb, with default values
51
+ - Configure it in config/initializers/tweaks_config.rb for your app
52
+
53
+ == LICENSE:
54
+
55
+ (The MIT License)
56
+
57
+ Copyright (c) 2010 (at Rails Camp Perth, Australia) by Gary McGhee, Buzzware Solutions
58
+
59
+ Permission is hereby granted, free of charge, to any person obtaining
60
+ a copy of this software and associated documentation files (the
61
+ 'Software'), to deal in the Software without restriction, including
62
+ without limitation the rights to use, copy, modify, merge, publish,
63
+ distribute, sublicense, and/or sell copies of the Software, and to
64
+ permit persons to whom the Software is furnished to do so, subject to
65
+ the following conditions:
66
+
67
+ The above copyright notice and this permission notice shall be
68
+ included in all copies or substantial portions of the Software.
69
+
70
+ THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND,
71
+ EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
72
+ MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
73
+ IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
74
+ CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
75
+ TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
76
+ SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
77
+
data/Rakefile ADDED
@@ -0,0 +1,66 @@
1
+ require 'rubygems'
2
+ require 'rake'
3
+
4
+ begin
5
+ require 'jeweler'
6
+ Jeweler::Tasks.new do |gem|
7
+ gem.name = "tweaks"
8
+ gem.summary = %Q{A minimal framework for implementing, configuring and distributing those little pieces of code}
9
+ gem.description = %Q{Tweaks provides a minimal framework for implementing, configuring and distributing those
10
+ little pieces of code you develop and collect through developing multiple rails projects.}
11
+ gem.email = "contact@buzzware.com.au"
12
+ gem.homepage = "http://github.com/buzzware/tweaks"
13
+ gem.authors = ["buzzware"]
14
+ gem.add_development_dependency "shoulda"
15
+ gem.files.include %w(
16
+ lib/tweaks.rb
17
+ )
18
+ # gem is a Gem::Specification... see http://www.rubygems.org/read/chapter/20 for additional settings
19
+ end
20
+ Jeweler::GemcutterTasks.new
21
+ Jeweler::RubyforgeTasks.new do |rubyforge|
22
+ rubyforge.doc_task = "rdoc"
23
+ end
24
+ rescue LoadError
25
+ puts "Jeweler (or a dependency) not available. Install it with: sudo gem install jeweler"
26
+ end
27
+
28
+ require 'rake/testtask'
29
+ Rake::TestTask.new(:test) do |test|
30
+ test.libs << 'lib' << 'test'
31
+ test.pattern = 'test/**/*_test.rb'
32
+ test.verbose = true
33
+ end
34
+
35
+ begin
36
+ require 'rcov/rcovtask'
37
+ Rcov::RcovTask.new do |test|
38
+ test.libs << 'test'
39
+ test.pattern = 'test/**/*_test.rb'
40
+ test.verbose = true
41
+ end
42
+ rescue LoadError
43
+ task :rcov do
44
+ abort "RCov is not available. In order to run rcov, you must: sudo gem install spicycode-rcov"
45
+ end
46
+ end
47
+
48
+ task :test => :check_dependencies
49
+
50
+ task :default => :test
51
+
52
+ require 'rake/rdoctask'
53
+
54
+ Rake::RDocTask.new do |rdoc|
55
+ if File.exist?('VERSION')
56
+ version = File.read('VERSION')
57
+ else
58
+ version = ""
59
+ end
60
+
61
+ rdoc.rdoc_dir = 'rdoc'
62
+ rdoc.title = "tweaks #{version}"
63
+ rdoc.rdoc_files.include('README*')
64
+ rdoc.rdoc_files.include('lib/**/*.rb')
65
+ end
66
+
data/VERSION ADDED
@@ -0,0 +1,2 @@
1
+ 0.1.0
2
+
@@ -0,0 +1,109 @@
1
+ # This is a cutdown version of ConfigClass from the buzzcore gem, and still is a bit messy.
2
+ # The idea is that the config can be declared with default values (enabling a reset to defaults),
3
+ # and that fields are implicitly declared with a type and value. New values for existing fields
4
+ # will then be converted to the original type. This is particularly useful eg if the values all
5
+ # come in as strings, but need to operate as other types
6
+ #
7
+ # use like this :
8
+ #
9
+ # config = TweakConfig.new(
10
+ # :something => String, # giving a class means the type is the given class, and the default value is nil
11
+ # :session_key => '_session',
12
+ # :upload_path=> 'cms/uploads',
13
+ # :thumbs_cache => File.expand_path('public/thumbs_cache',RAILS_ROOT), # make sure this exists with correct permissions
14
+ # :thumbs_url => '/thumbs_cache'
15
+ # :delay => 3.5,
16
+ # :log_level => :warn
17
+ # )
18
+
19
+ class TweakConfig < Hash
20
+
21
+ attr_reader :default_values
22
+
23
+ def initialize(aDefaultValues=nil,aGivenValues=nil)
24
+ @default_values = (aDefaultValues ? aDefaultValues.clone : {})
25
+ reset()
26
+ read(aGivenValues) if aGivenValues
27
+ end
28
+
29
+ # reset values back to defaults
30
+ def reset
31
+ self.clear
32
+ me = self
33
+ @default_values.each {|n,v| me[n] = v.is_a?(Class) ? nil : v}
34
+ end
35
+
36
+ def self.to_integer(aValue,aDefault=nil)
37
+ t = aValue.strip
38
+ return aDefault if t.empty? || !t.index(/^-{0,1}[0-9]+$/)
39
+ return t.to_i
40
+ end
41
+
42
+ def self.to_float(aValue,aDefault=nil)
43
+ t = aValue.strip
44
+ return aDefault if !t =~ /(\+|-)?([0-9]+\.?[0-9]*|\.[0-9]+)([eE](\+|-)?[0-9]+)?/
45
+ return t.to_f
46
+ end
47
+
48
+ def set_int(aKey,aValue)
49
+ case aValue
50
+ when String then self[aKey] = TweakConfig::to_integer(aValue,self[aKey]); # aValue.to_integer(self[aKey]);
51
+ when Fixnum then self[aKey] = aValue;
52
+ when Float then self[aKey] = aValue.to_i;
53
+ end
54
+ end
55
+
56
+ def set_float(aKey,aValue)
57
+ case aValue
58
+ when String then self[aKey] = TweakConfig::to_float(aValue,self[aKey]) # aValue.to_float(self[aKey]);
59
+ when Fixnum then self[aKey] = aValue.to_f;
60
+ when Float then self[aKey] = aValue;
61
+ end
62
+ end
63
+
64
+ def set_boolean(aKey,aValue)
65
+ case aValue
66
+ when TrueClass,FalseClass then self[aKey] = aValue;
67
+ when String then self[aKey] = (['1','yes','y','true','on'].include?(aValue.downcase))
68
+ else
69
+ set_boolean(aKey,aValue.to_s)
70
+ end
71
+ end
72
+
73
+ def set_symbol(aKey,aValue)
74
+ case aValue
75
+ when String then self[aKey] = (aValue.to_sym rescue nil);
76
+ when Symbol then self[aKey] = aValue;
77
+ end
78
+ end
79
+
80
+ def copy_item(aHash,aKey)
81
+ d = default_values[aKey]
82
+ d_class = (d.is_a?(Class) ? d : d.class)
83
+ cname = d_class.name.to_sym
84
+ case cname
85
+ when :NilClass then ;
86
+ when :String then self[aKey] = aHash[aKey].to_s unless aHash[aKey].nil?
87
+ when :Float then set_float(aKey,aHash[aKey]);
88
+ when :Fixnum then set_int(aKey,aHash[aKey]);
89
+ when :TrueClass, :FalseClass then set_boolean(aKey,aHash[aKey]);
90
+ when :Symbol then self[aKey] = (aHash[aKey].to_sym rescue nil)
91
+ when :Proc then self[aKey] = aHash[aKey] if aHash[aKey].is_a?(Proc)
92
+ else
93
+ self[aKey] = aHash[aKey]
94
+ end
95
+ end
96
+
97
+ def read(aSource,aLimitToDefaults=false)
98
+ aSource.each do |k,v|
99
+ copy_item(aSource,k) unless aLimitToDefaults && !default_values.include?[k]
100
+ end
101
+ self
102
+ end
103
+
104
+ def to_hash
105
+ {}.merge(self)
106
+ end
107
+
108
+ end
109
+
data/lib/tweaks.rb ADDED
@@ -0,0 +1,87 @@
1
+ require File.join(File.dirname(__FILE__),'tweak_config')
2
+
3
+ class Tweaks
4
+
5
+ def self.reset
6
+ @@configs = {}
7
+ @@procs = {}
8
+ @@installed = []
9
+ end
10
+ reset()
11
+
12
+ # load all tweaks from a path
13
+ def self.load_all(aPath)
14
+ aPath = File.expand_path(aPath)
15
+ # get list of tweak_files
16
+ tweak_files = Dir.glob(File.join(aPath,'*_tweak.rb'))
17
+ tweak_files.each do |f|
18
+ Tweaks.load(f)
19
+ end
20
+ end
21
+
22
+ def self.load(aTweakFile)
23
+ if defined? Rails
24
+ require_dependency aTweakFile
25
+ else
26
+ ::Kernel.load(aTweakFile)
27
+ end
28
+ end
29
+
30
+ def self.do_it(aName,&block)
31
+ return unless block_given? || (p = @@procs[aName])
32
+ @@installed << aName
33
+ config = @@configs[aName]
34
+ if block_given?
35
+ yield(config,aName)
36
+ else
37
+ p.call(config,aName)
38
+ end
39
+ end
40
+
41
+ # called by tweak code (not sure if necessary)
42
+ # aDefaults creates an optional config object for this tweak with the given defaults and previously given values
43
+ # aNormally :enabled or :disabled
44
+ def self.define(aName,aDefaults=nil,&block)
45
+ aName = aName.to_sym
46
+ aDefaults = TweakConfig.new(aDefaults)
47
+ app_config = @@configs[aName.to_sym]
48
+ if app_config
49
+ @@configs[aName] = (app_config ? aDefaults.read(app_config) : aDefaults)
50
+ do_it(aName,&block)
51
+ else
52
+ @@configs[aName] = aDefaults
53
+ @@procs[aName] = block.to_proc
54
+ end
55
+ end
56
+
57
+ def self.have_config?(aName)
58
+ !!@@configs[aName.to_sym]
59
+ end
60
+
61
+ def self.installed?(aName)
62
+ !!@@installed.include?(aName.to_sym)
63
+ end
64
+
65
+ # pass a hash to set
66
+ # returns config hash for modification
67
+ def self.configure(aName,aConfig=nil)
68
+ aName = aName.to_sym
69
+ if have_defaults = have_config?(aName) # will be defaults from define, so merge in app config
70
+ config = @@configs[aName]
71
+ config.read(aConfig) if aConfig
72
+ @@configs[aName] = config
73
+ else # store app config for merge later
74
+ @@configs[aName] = TweakConfig.new(aConfig)
75
+ end
76
+ do_it(aName) if have_defaults && !installed?(aName)
77
+ @@configs[aName]
78
+ end
79
+
80
+ def self.define_and_install(aName,aConfig=nil,&block)
81
+ define(aName,aConfig,&block)
82
+ configure(aName)
83
+ end
84
+
85
+
86
+ end
87
+
Binary file
data/rails/init.rb ADDED
@@ -0,0 +1,5 @@
1
+ config.after_initialize do
2
+ Tweaks.load_all(File.join(File.dirname(__FILE__),'../tweaks'))
3
+ Tweaks.load_all(File.join(RAILS_ROOT,'tweaks'))
4
+ end
5
+
@@ -0,0 +1,12 @@
1
+ Tweaks.define(
2
+ :<%= args.first %>, # name of tweak
3
+ {
4
+ # default config values here
5
+ }
6
+ ) do |config,name|
7
+
8
+ # The tweak does its thing here, using the config given above
9
+ # Of course, you can declare a class or whatever above define to call here
10
+
11
+ end
12
+
@@ -0,0 +1,34 @@
1
+ class TweakGenerator < Rails::Generator::Base
2
+
3
+ TWEAKS_CONFIG_FILENAME = 'config/initializers/tweaks_config.rb'
4
+
5
+ def manifest
6
+ record do |m|
7
+ m.directory "tweaks"
8
+ m.template "tweak.erb", File.join("tweaks", "#{m.target.args.first}_tweak.rb") #:assigns => { :args => @gen_args }
9
+
10
+ tweaks_config_filepath = File.expand_path(TWEAKS_CONFIG_FILENAME,RAILS_ROOT)
11
+ tweaks_config_s = ''
12
+ File.open(tweaks_config_filepath, "r") { |f| tweaks_config_s = f.read } if File.exists?(tweaks_config_filepath)
13
+ STDOUT.puts "\n Creating/appending #{m.target.args.first} config to #{tweaks_config_filepath}\n\n"
14
+ tweaks_config_s += <<CONFIG_TEMPLATE
15
+
16
+ Tweaks.configure(
17
+ :#{m.target.args.first},
18
+ {
19
+ # config values here
20
+ }
21
+ )
22
+
23
+ CONFIG_TEMPLATE
24
+
25
+ File.open(tweaks_config_filepath,'w') {|file| file.write tweaks_config_s }
26
+ end
27
+ end
28
+
29
+ protected
30
+ def banner
31
+ "Usage: #{$0} #{spec.name} tweak_name"
32
+ end
33
+
34
+ end
@@ -0,0 +1,26 @@
1
+ gem "buzzcore"; require 'buzzcore'
2
+ require_paths '.','../lib'
3
+ require 'tweaks'
4
+ #require File.join(File.dirname(__FILE__),'test_helper')
5
+
6
+ describe "tweaks" do
7
+ it "create config and access" do
8
+
9
+ default_config = {
10
+ :name => String,
11
+ :age => 52,
12
+ :number_string => String,
13
+ :a_symbol => Symbol
14
+ }
15
+ later_config = {
16
+ :number_string => 5, :name => 'Roger', :a_symbol => 'apple'
17
+ }
18
+ result_config = TweakConfig.new(default_config,later_config)
19
+ result_config.should == {
20
+ :name => 'Roger',
21
+ :number_string => '5',
22
+ :age => 52,
23
+ :a_symbol => :apple
24
+ }
25
+ end
26
+ end
data/test/main_spec.rb ADDED
@@ -0,0 +1,91 @@
1
+ gem "buzzcore"; require 'buzzcore'
2
+ require_paths '.','../lib'
3
+ require 'tweaks'
4
+ #require File.join(File.dirname(__FILE__),'test_helper')
5
+
6
+ describe "tweaks" do
7
+
8
+ before(:each) do
9
+ Tweaks.reset()
10
+ end
11
+
12
+ it "should get execute immediately with define_and_install and correct config" do
13
+ received_config = nil
14
+ input_config = {:food => [:bacon, :bacon_salad, :pizza]}
15
+
16
+ Tweaks.define_and_install(
17
+ :lunch,
18
+ input_config
19
+ ) do |config,name|
20
+ received_config = config
21
+ end
22
+ received_config.should == input_config
23
+ end
24
+
25
+ it "should not get executed immediately on define, but is executed on config" do
26
+ received_config = nil
27
+ input_config = {:food => [:bacon, :bacon_salad, :pizza]}
28
+ Tweaks.define(
29
+ :lunch,
30
+ input_config
31
+ ) do |config,name|
32
+ received_config = config
33
+ end
34
+ received_config.should == nil
35
+ Tweaks.configure(:lunch)
36
+ received_config.should == input_config
37
+ end
38
+
39
+
40
+ it "should not get executed immediately, but is executed on config and has merged config" do
41
+ received_config = nil
42
+ input_config = {
43
+ :name => String,
44
+ :age => 52,
45
+ :number_string => String,
46
+ :a_symbol => Symbol
47
+ }
48
+ Tweaks.define(
49
+ :person,
50
+ input_config
51
+ ) do |config,name|
52
+ received_config = config
53
+ end
54
+ received_config.should == nil
55
+ Tweaks.configure(:person,{:number_string => 5, :name => 'Roger', :a_symbol => 'apple'})
56
+ received_config.should == {
57
+ :name => 'Roger',
58
+ :number_string => '5',
59
+ :age => 52,
60
+ :a_symbol => :apple
61
+ }
62
+ received_config.class.should == TweakConfig
63
+ end
64
+
65
+ it "when configured before defined, should be executed on define and has merged config" do
66
+ received_config = nil
67
+ input_config = {
68
+ :name => String,
69
+ :age => 52,
70
+ :number_string => String,
71
+ :a_symbol => Symbol
72
+ }
73
+ Tweaks.configure(:person,{:number_string => 5, :name => 'Roger', :a_symbol => 'apple'})
74
+ received_config.should == nil
75
+ Tweaks.define(
76
+ :person,
77
+ input_config
78
+ ) do |config,name|
79
+ received_config = config
80
+ end
81
+ received_config.should == {
82
+ :name => 'Roger',
83
+ :number_string => '5',
84
+ :age => 52,
85
+ :a_symbol => :apple
86
+ }
87
+ received_config.class.should == TweakConfig
88
+ end
89
+
90
+ end
91
+
@@ -0,0 +1,10 @@
1
+ require 'rubygems'
2
+ require 'test/unit'
3
+ require 'shoulda'
4
+
5
+ $LOAD_PATH.unshift(File.join(File.dirname(__FILE__), '..', 'lib'))
6
+ $LOAD_PATH.unshift(File.dirname(__FILE__))
7
+ require 'tweaks'
8
+
9
+ class Test::Unit::TestCase
10
+ end
data/tweaks.gemspec ADDED
@@ -0,0 +1,63 @@
1
+ # Generated by jeweler
2
+ # DO NOT EDIT THIS FILE DIRECTLY
3
+ # Instead, edit Jeweler::Tasks in Rakefile, and run the gemspec command
4
+ # -*- encoding: utf-8 -*-
5
+
6
+ Gem::Specification.new do |s|
7
+ s.name = %q{tweaks}
8
+ s.version = "0.1.0"
9
+
10
+ s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
11
+ s.authors = ["buzzware"]
12
+ s.date = %q{2010-11-15}
13
+ s.description = %q{Tweaks provides a minimal framework for implementing, configuring and distributing those
14
+ little pieces of code you develop and collect through developing multiple rails projects.}
15
+ s.email = %q{contact@buzzware.com.au}
16
+ s.extra_rdoc_files = [
17
+ "LICENSE",
18
+ "README.rdoc"
19
+ ]
20
+ s.files = [
21
+ ".gitignore",
22
+ "LICENSE",
23
+ "README.rdoc",
24
+ "Rakefile",
25
+ "VERSION",
26
+ "lib/tweak_config.rb",
27
+ "lib/tweaks.rb",
28
+ "pkg/tweaks-0.0.1.gem",
29
+ "rails/init.rb",
30
+ "rails_generators/tweak/templates/tweak.erb",
31
+ "rails_generators/tweak/tweak_generator.rb",
32
+ "test/config_spec.rb",
33
+ "test/main_spec.rb",
34
+ "test/test_helper.rb",
35
+ "tweaks.gemspec",
36
+ "tweaks.vpj",
37
+ "tweaks.vpw"
38
+ ]
39
+ s.homepage = %q{http://github.com/buzzware/tweaks}
40
+ s.rdoc_options = ["--charset=UTF-8"]
41
+ s.require_paths = ["lib"]
42
+ s.rubygems_version = %q{1.3.7}
43
+ s.summary = %q{A minimal framework for implementing, configuring and distributing those little pieces of code}
44
+ s.test_files = [
45
+ "test/config_spec.rb",
46
+ "test/main_spec.rb",
47
+ "test/test_helper.rb"
48
+ ]
49
+
50
+ if s.respond_to? :specification_version then
51
+ current_version = Gem::Specification::CURRENT_SPECIFICATION_VERSION
52
+ s.specification_version = 3
53
+
54
+ if Gem::Version.new(Gem::VERSION) >= Gem::Version.new('1.2.0') then
55
+ s.add_development_dependency(%q<shoulda>, [">= 0"])
56
+ else
57
+ s.add_dependency(%q<shoulda>, [">= 0"])
58
+ end
59
+ else
60
+ s.add_dependency(%q<shoulda>, [">= 0"])
61
+ end
62
+ end
63
+
data/tweaks.vpj ADDED
@@ -0,0 +1,85 @@
1
+ <!DOCTYPE Project SYSTEM "http://www.slickedit.com/dtd/vse/10.0/vpj.dtd">
2
+ <Project
3
+ Version="10.0"
4
+ VendorName="SlickEdit"
5
+ WorkingDir=".">
6
+ <Config
7
+ Name="Release"
8
+ OutputFile=""
9
+ CompilerConfigName="">
10
+ <Menu>
11
+ <Target
12
+ Name="Compile"
13
+ MenuCaption="&amp;Compile"
14
+ CaptureOutputWith="ProcessBuffer"
15
+ SaveOption="SaveCurrent"
16
+ RunFromDir="%rw">
17
+ <Exec/>
18
+ </Target>
19
+ <Target
20
+ Name="Build"
21
+ MenuCaption="&amp;Build"
22
+ CaptureOutputWith="ProcessBuffer"
23
+ SaveOption="SaveWorkspaceFiles"
24
+ RunFromDir="%rw">
25
+ <Exec/>
26
+ </Target>
27
+ <Target
28
+ Name="Rebuild"
29
+ MenuCaption="&amp;Rebuild"
30
+ CaptureOutputWith="ProcessBuffer"
31
+ SaveOption="SaveWorkspaceFiles"
32
+ RunFromDir="%rw">
33
+ <Exec/>
34
+ </Target>
35
+ <Target
36
+ Name="Debug"
37
+ MenuCaption="&amp;Debug"
38
+ SaveOption="SaveNone"
39
+ RunFromDir="%rw">
40
+ <Exec/>
41
+ </Target>
42
+ <Target
43
+ Name="Execute"
44
+ MenuCaption="E&amp;xecute"
45
+ SaveOption="SaveNone"
46
+ RunFromDir="%rw">
47
+ <Exec CmdLine='".exe"'/>
48
+ </Target>
49
+ </Menu>
50
+ </Config>
51
+ <CustomFolders>
52
+ <Folder
53
+ Name="Source Files"
54
+ Filters="*.c;*.C;*.cc;*.cpp;*.cp;*.cxx;*.c++;*.prg;*.pas;*.dpr;*.asm;*.s;*.bas;*.java;*.cs;*.sc;*.e;*.cob;*.html;*.rc;*.tcl;*.py;*.pl;*.d"/>
55
+ <Folder
56
+ Name="Header Files"
57
+ Filters="*.h;*.H;*.hh;*.hpp;*.hxx;*.inc;*.sh;*.cpy;*.if"/>
58
+ <Folder
59
+ Name="Resource Files"
60
+ Filters="*.ico;*.cur;*.dlg"/>
61
+ <Folder
62
+ Name="Bitmaps"
63
+ Filters="*.bmp"/>
64
+ <Folder
65
+ Name="Other Files"
66
+ Filters="">
67
+ </Folder>
68
+ </CustomFolders>
69
+ <Files AutoFolders="DirectoryView">
70
+ <Folder Name="rails_generators">
71
+ <F
72
+ N="rails_generators/*"
73
+ Recurse="1"
74
+ Refilter="0"
75
+ Excludes=""/>
76
+ </Folder>
77
+ <F
78
+ N="*.rb"
79
+ Recurse="1"
80
+ Refilter="0"
81
+ Excludes=".git"/>
82
+ <F N="Rakefile"/>
83
+ <F N="README.rdoc"/>
84
+ </Files>
85
+ </Project>
data/tweaks.vpw ADDED
@@ -0,0 +1,6 @@
1
+ <!DOCTYPE Workspace SYSTEM "http://www.slickedit.com/dtd/vse/10.0/vpw.dtd">
2
+ <Workspace Version="10.0" VendorName="SlickEdit">
3
+ <Projects>
4
+ <Project File="tweaks.vpj" />
5
+ </Projects>
6
+ </Workspace>
metadata ADDED
@@ -0,0 +1,101 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: tweaks
3
+ version: !ruby/object:Gem::Version
4
+ hash: 27
5
+ prerelease: false
6
+ segments:
7
+ - 0
8
+ - 1
9
+ - 0
10
+ version: 0.1.0
11
+ platform: ruby
12
+ authors:
13
+ - buzzware
14
+ autorequire:
15
+ bindir: bin
16
+ cert_chain: []
17
+
18
+ date: 2010-11-15 00:00:00 +08:00
19
+ default_executable:
20
+ dependencies:
21
+ - !ruby/object:Gem::Dependency
22
+ name: shoulda
23
+ prerelease: false
24
+ requirement: &id001 !ruby/object:Gem::Requirement
25
+ none: false
26
+ requirements:
27
+ - - ">="
28
+ - !ruby/object:Gem::Version
29
+ hash: 3
30
+ segments:
31
+ - 0
32
+ version: "0"
33
+ type: :development
34
+ version_requirements: *id001
35
+ description: |-
36
+ Tweaks provides a minimal framework for implementing, configuring and distributing those
37
+ little pieces of code you develop and collect through developing multiple rails projects.
38
+ email: contact@buzzware.com.au
39
+ executables: []
40
+
41
+ extensions: []
42
+
43
+ extra_rdoc_files:
44
+ - LICENSE
45
+ - README.rdoc
46
+ files:
47
+ - .gitignore
48
+ - LICENSE
49
+ - README.rdoc
50
+ - Rakefile
51
+ - VERSION
52
+ - lib/tweak_config.rb
53
+ - lib/tweaks.rb
54
+ - pkg/tweaks-0.0.1.gem
55
+ - rails/init.rb
56
+ - rails_generators/tweak/templates/tweak.erb
57
+ - rails_generators/tweak/tweak_generator.rb
58
+ - test/config_spec.rb
59
+ - test/main_spec.rb
60
+ - test/test_helper.rb
61
+ - tweaks.gemspec
62
+ - tweaks.vpj
63
+ - tweaks.vpw
64
+ has_rdoc: true
65
+ homepage: http://github.com/buzzware/tweaks
66
+ licenses: []
67
+
68
+ post_install_message:
69
+ rdoc_options:
70
+ - --charset=UTF-8
71
+ require_paths:
72
+ - lib
73
+ required_ruby_version: !ruby/object:Gem::Requirement
74
+ none: false
75
+ requirements:
76
+ - - ">="
77
+ - !ruby/object:Gem::Version
78
+ hash: 3
79
+ segments:
80
+ - 0
81
+ version: "0"
82
+ required_rubygems_version: !ruby/object:Gem::Requirement
83
+ none: false
84
+ requirements:
85
+ - - ">="
86
+ - !ruby/object:Gem::Version
87
+ hash: 3
88
+ segments:
89
+ - 0
90
+ version: "0"
91
+ requirements: []
92
+
93
+ rubyforge_project:
94
+ rubygems_version: 1.3.7
95
+ signing_key:
96
+ specification_version: 3
97
+ summary: A minimal framework for implementing, configuring and distributing those little pieces of code
98
+ test_files:
99
+ - test/config_spec.rb
100
+ - test/main_spec.rb
101
+ - test/test_helper.rb