milkshake 0.0.1

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.
@@ -0,0 +1,36 @@
1
+
2
+ module Milkshake
3
+ module RailsExtentions
4
+ module Migrator
5
+
6
+ def self.included(base)
7
+ base.module_eval do
8
+ alias_method :migrations_without_milkshake, :migrations
9
+ alias_method :migrations, :migrations_with_milkshake
10
+ end
11
+ end
12
+
13
+ def migrations_with_milkshake
14
+ return @migrations if @migrations
15
+ all_migrations = []
16
+
17
+ Milkshake.environment.gemspecs.each do |gemspec|
18
+ migrations_path_for_gemspec = File.join(gemspec.full_gem_path, 'db', 'migrate')
19
+ if File.directory?(migrations_path_for_gemspec)
20
+ original_migrations_path = @migrations_path
21
+ @migrations = nil
22
+ @migrations_path = migrations_path_for_gemspec
23
+ all_migrations.concat(migrations_without_milkshake)
24
+ @migrations_path = original_migrations_path
25
+ end
26
+ end
27
+
28
+ all_migrations = all_migrations.sort_by(&:version)
29
+ down? ? all_migrations.reverse : all_migrations
30
+
31
+ @migrations = all_migrations
32
+ end
33
+
34
+ end
35
+ end
36
+ end
@@ -0,0 +1,4 @@
1
+ class ApplicationController < ActionController::Base
2
+ helper :all
3
+ protect_from_forgery
4
+ end
@@ -0,0 +1,25 @@
1
+
2
+ module Milkshake
3
+ module RubygemsExtentions
4
+ module Specification
5
+
6
+ def rails_dependencies
7
+ path = File.join(self.full_gem_path, 'config', 'milkshake.yml')
8
+ return YAML.load_file(path)['gems']
9
+ rescue
10
+ return(@engine_dependencies || {})
11
+ end
12
+
13
+ def store_persistent_load_information!
14
+ @persistent_loaded = @loaded
15
+ @persistent_loaded_from = @loaded_from
16
+ end
17
+
18
+ def use_persistent_load_information!
19
+ @loaded = @persistent_loaded
20
+ @loaded_from = @persistent_loaded_from
21
+ end
22
+
23
+ end
24
+ end
25
+ end
@@ -0,0 +1,49 @@
1
+
2
+ module Milkshake
3
+ class Template
4
+
5
+ class << self
6
+ attr_accessor :template_dir
7
+
8
+ def [](name)
9
+ (@templates ||= {})[name] ||= load(name)
10
+ end
11
+
12
+ def evaluate(name, context={})
13
+ self[name].evaluate(context)
14
+ end
15
+ end
16
+ self.template_dir = File.join(File.dirname(__FILE__), '..', '..', 'templates')
17
+
18
+ def self.load(name)
19
+ path = File.join(self.template_dir, name)
20
+ if File.exist?(path)
21
+ new IO.read(path)
22
+ else
23
+ raise "Missing template #{name}"
24
+ end
25
+ end
26
+
27
+ def initialize(template)
28
+ @template = template
29
+ end
30
+
31
+ def evaluate(context={})
32
+ result = @template.dup
33
+ result.gsub!(/\{\{([a-zA-Z0-9_.-]+)\}\}/) do |m|
34
+ (context[$1] || context[$1.to_sym]).to_s
35
+ end
36
+ result.extend SourceFile
37
+ result
38
+ end
39
+
40
+ module SourceFile
41
+ def write_to(path)
42
+ FileUtils.mkdir_p(File.dirname(path))
43
+ File.open(path, 'w+') { |f| f.write self }
44
+ self
45
+ end
46
+ end
47
+
48
+ end
49
+ end
@@ -0,0 +1,38 @@
1
+
2
+ require 'digest/sha1'
3
+
4
+ module Milkshake
5
+ class Validator
6
+
7
+ attr_reader :cache, :link_time
8
+
9
+ def initialize(cache)
10
+ @cache = cache
11
+
12
+ @link_time = @cache.key('link.time')
13
+ @cache.reset! if relink?
14
+ end
15
+
16
+ def current_link_time
17
+ return @current_link_time unless @current_link_time.nil?
18
+
19
+ path = File.join(RAILS_ROOT, 'tmp', 'relink.txt')
20
+ if File.file?(path)
21
+ @current_link_time = File.mtime(path)
22
+ else
23
+ @current_link_time = Time.now
24
+ end
25
+
26
+ @current_link_time
27
+ end
28
+
29
+ def relink?
30
+ (link_time.nil?) or (current_link_time and link_time and current_link_time > link_time)
31
+ end
32
+
33
+ def persist!
34
+ @cache['link.time'] = Time.now
35
+ end
36
+
37
+ end
38
+ end
data/lib/milkshake.rb ADDED
@@ -0,0 +1,72 @@
1
+
2
+ require 'fileutils'
3
+
4
+ module Milkshake
5
+
6
+ autoload :DependencyResolver, 'milkshake/dependency_resolver'
7
+ autoload :Environment, 'milkshake/environment'
8
+ autoload :Validator, 'milkshake/validator'
9
+ autoload :Template, 'milkshake/template'
10
+ autoload :Extender, 'milkshake/extender'
11
+ autoload :Linker, 'milkshake/linker'
12
+ autoload :Loader, 'milkshake/loader'
13
+ autoload :Cache, 'milkshake/cache'
14
+ autoload :App, 'milkshake/app'
15
+
16
+ module RailsExtentions
17
+ autoload :Configuration, 'milkshake/rails_extentions/configuration'
18
+ autoload :Initializer, 'milkshake/rails_extentions/initializer'
19
+ autoload :Migrator, 'milkshake/rails_extentions/migrations'
20
+ autoload :GemBoot, 'milkshake/rails_extentions/boot'
21
+ autoload :VendorBoot, 'milkshake/rails_extentions/boot'
22
+ end
23
+
24
+ module RubygemsExtentions
25
+ autoload :Specification, 'milkshake/rubygems_extentions/specification'
26
+ end
27
+
28
+ class << self
29
+ attr_accessor :configuration_file
30
+ attr_accessor :cache_file
31
+
32
+ def load!
33
+ cache
34
+ validator
35
+ environment
36
+ loader
37
+ linker
38
+ extender
39
+ end
40
+
41
+ def environment
42
+ self.configuration_file ||= File.join(RAILS_ROOT, 'config', 'milkshake.yml')
43
+ @environment ||= Environment.load(self.cache, self.configuration_file)
44
+ end
45
+
46
+ def validator
47
+ @validator ||= Validator.new(self.cache)
48
+ end
49
+
50
+ def loader
51
+ @loader ||= Loader.new(self.environment, self.cache)
52
+ end
53
+
54
+ def linker
55
+ @linker ||= Linker.new(self.environment, self.validator, self.cache)
56
+ end
57
+
58
+ def extender
59
+ @extender ||= Extender.new
60
+ end
61
+
62
+ def cache
63
+ self.cache_file ||= File.join(RAILS_ROOT, 'tmp', 'cache', 'milkshake.cache')
64
+ @cache ||= Cache.new(self.cache_file)
65
+ end
66
+
67
+ def persist!
68
+ cache.persist!
69
+ end
70
+ end
71
+
72
+ end
data/milkshake.gemspec ADDED
@@ -0,0 +1,116 @@
1
+ # Generated by jeweler
2
+ # DO NOT EDIT THIS FILE
3
+ # Instead, edit Jeweler::Tasks in Rakefile, and run `rake gemspec`
4
+ # -*- encoding: utf-8 -*-
5
+
6
+ Gem::Specification.new do |s|
7
+ s.name = %q{milkshake}
8
+ s.version = "0.0.1"
9
+
10
+ s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
11
+ s.authors = ["Simon Menke"]
12
+ s.date = %q{2009-09-30}
13
+ s.default_executable = %q{milkshake}
14
+ s.description = %q{Compose rails applications using several smaller rails applications}
15
+ s.email = %q{simon@mrhenry.be}
16
+ s.executables = ["milkshake"]
17
+ s.extra_rdoc_files = [
18
+ "LICENSE",
19
+ "README.rdoc"
20
+ ]
21
+ s.files = [
22
+ ".document",
23
+ ".gitignore",
24
+ "LICENSE",
25
+ "README.rdoc",
26
+ "Rakefile",
27
+ "VERSION",
28
+ "bin/milkshake",
29
+ "lib/milkshake.rb",
30
+ "lib/milkshake.rb",
31
+ "lib/milkshake/app.rb",
32
+ "lib/milkshake/app.rb",
33
+ "lib/milkshake/app/actions.rb",
34
+ "lib/milkshake/app/actions.rb",
35
+ "lib/milkshake/app/defaults.rb",
36
+ "lib/milkshake/app/defaults.rb",
37
+ "lib/milkshake/app/helpers.rb",
38
+ "lib/milkshake/app/helpers.rb",
39
+ "lib/milkshake/automagic.rb",
40
+ "lib/milkshake/automagic.rb",
41
+ "lib/milkshake/cache.rb",
42
+ "lib/milkshake/cache.rb",
43
+ "lib/milkshake/dependency_resolver.rb",
44
+ "lib/milkshake/dependency_resolver.rb",
45
+ "lib/milkshake/environment.rb",
46
+ "lib/milkshake/environment.rb",
47
+ "lib/milkshake/extender.rb",
48
+ "lib/milkshake/extender.rb",
49
+ "lib/milkshake/linker.rb",
50
+ "lib/milkshake/linker.rb",
51
+ "lib/milkshake/loader.rb",
52
+ "lib/milkshake/loader.rb",
53
+ "lib/milkshake/rails_extentions/boot.rb",
54
+ "lib/milkshake/rails_extentions/boot.rb",
55
+ "lib/milkshake/rails_extentions/configuration.rb",
56
+ "lib/milkshake/rails_extentions/configuration.rb",
57
+ "lib/milkshake/rails_extentions/initializer.rb",
58
+ "lib/milkshake/rails_extentions/initializer.rb",
59
+ "lib/milkshake/rails_extentions/migrations.rb",
60
+ "lib/milkshake/rails_extentions/migrations.rb",
61
+ "lib/milkshake/rails_fallbacks/application_controller.rb",
62
+ "lib/milkshake/rails_fallbacks/application_controller.rb",
63
+ "lib/milkshake/rubygems_extentions/specification.rb",
64
+ "lib/milkshake/rubygems_extentions/specification.rb",
65
+ "lib/milkshake/template.rb",
66
+ "lib/milkshake/template.rb",
67
+ "lib/milkshake/validator.rb",
68
+ "lib/milkshake/validator.rb",
69
+ "milkshake.gemspec",
70
+ "templates/gitignore",
71
+ "templates/gitignore",
72
+ "templates/gitignore_for_data",
73
+ "templates/gitignore_for_data",
74
+ "templates/jeweler.rake",
75
+ "templates/jeweler.rake",
76
+ "templates/milkshake.yml",
77
+ "templates/milkshake.yml",
78
+ "templates/preinitializer.rb",
79
+ "templates/preinitializer.rb",
80
+ "templates/routes.rb",
81
+ "templates/routes.rb",
82
+ "test/milkshake_test.rb",
83
+ "test/test_helper.rb"
84
+ ]
85
+ s.homepage = %q{http://github.com/simonmenke/milkshake}
86
+ s.rdoc_options = ["--charset=UTF-8"]
87
+ s.require_paths = ["lib"]
88
+ s.rubygems_version = %q{1.3.5}
89
+ s.summary = %q{Make composite rails applications}
90
+ s.test_files = [
91
+ "test/milkshake_test.rb",
92
+ "test/test_helper.rb"
93
+ ]
94
+
95
+ if s.respond_to? :specification_version then
96
+ current_version = Gem::Specification::CURRENT_SPECIFICATION_VERSION
97
+ s.specification_version = 3
98
+
99
+ if Gem::Version.new(Gem::RubyGemsVersion) >= Gem::Version.new('1.2.0') then
100
+ s.add_development_dependency(%q<thoughtbot-shoulda>, [">= 0"])
101
+ s.add_development_dependency(%q<yard>, [">= 0"])
102
+ s.add_runtime_dependency(%q<thor>, [">= 0"])
103
+ s.add_runtime_dependency(%q<snapshots>, [">= 0"])
104
+ else
105
+ s.add_dependency(%q<thoughtbot-shoulda>, [">= 0"])
106
+ s.add_dependency(%q<yard>, [">= 0"])
107
+ s.add_dependency(%q<thor>, [">= 0"])
108
+ s.add_dependency(%q<snapshots>, [">= 0"])
109
+ end
110
+ else
111
+ s.add_dependency(%q<thoughtbot-shoulda>, [">= 0"])
112
+ s.add_dependency(%q<yard>, [">= 0"])
113
+ s.add_dependency(%q<thor>, [">= 0"])
114
+ s.add_dependency(%q<snapshots>, [">= 0"])
115
+ end
116
+ end
@@ -0,0 +1,17 @@
1
+
2
+ .DS_Store
3
+
4
+ log/*
5
+ tmp/*
6
+
7
+ lib/tasks/vendor
8
+ public/vendor
9
+
10
+ db/system
11
+ db/*.sqlite3
12
+ db/schema*
13
+ db/snapshots
14
+
15
+ ./*.gem
16
+ ./pkg
17
+ ./rdoc
@@ -0,0 +1,2 @@
1
+
2
+ .DS_Store
@@ -0,0 +1,58 @@
1
+
2
+ begin
3
+ require 'jeweler'
4
+ Jeweler::Tasks.new do |gem|
5
+ gem.name = "{{name}}"
6
+ gem.summary = %Q{{{summary}}}
7
+ gem.description = %Q{{{description}}}
8
+ gem.email = "{{email}}"
9
+ gem.homepage = "{{website}}"
10
+ gem.authors = ["{{author}}"]
11
+
12
+ # development dependencies
13
+ gem.add_development_dependency "milkshake"
14
+ gem.add_development_dependency "thoughtbot-shoulda"
15
+
16
+ # rdoc
17
+ gem.has_rdoc = true
18
+ gem.rdoc_options << '--title' << "{{name}}"
19
+ gem.rdoc_options << '--line-numbers' << '--inline-source'
20
+
21
+ included_files = FileList['app/**/*.rb']
22
+
23
+ ignored_files = FileList['app/controllers/application_controller.rb'] +
24
+ FileList['app/helpers/application_helper.rb']
25
+
26
+ gem.extra_rdoc_files += (included_files - ignored_files)
27
+
28
+ # files
29
+ included_files = FileList['lib/**/*.rb'] +
30
+ FileList['app/**/*.rb'] +
31
+ FileList['app/views/**/*'] +
32
+ FileList['rails/**/*.rb'] +
33
+ FileList['config/locales/*.{rb,yml}'] +
34
+ FileList['config/milkshake.yml'] +
35
+ FileList['config/routes.rb'] +
36
+ FileList['db/migrate/*.{rb}'] +
37
+ FileList['public/**/*']
38
+
39
+ ignored_files = FileList['app/controllers/application_controller.rb'] +
40
+ FileList['app/helpers/application_helper.rb'] +
41
+ FileList['public/{404,422,500}.html'] +
42
+ FileList['public/vendor/**/*'] +
43
+ FileList['public/system/**/*'] +
44
+ FileList['lib/tasks/jeweler.rb']
45
+
46
+ gem.files += (included_files - ignored_files)
47
+
48
+ # runtime dependencies
49
+ milkshake_config = YAML.load_file('config/milkshake.yml')
50
+ milkshake_config['gems'].each do |name, options|
51
+ gem.add_runtime_dependency(name, (options['version'] || Gem::Requirement.default))
52
+ end
53
+
54
+ # gem is a Gem::Specification... see http://www.rubygems.org/read/chapter/20 for additional settings
55
+ end
56
+ rescue LoadError
57
+ puts "Jeweler (or a dependency) not available. Install it with: sudo gem install jeweler"
58
+ end
@@ -0,0 +1,5 @@
1
+ gems:
2
+ my-gem:
3
+ version: 0.2.38
4
+ lib: my_gem
5
+ source: http://www.github.com
@@ -0,0 +1,4 @@
1
+
2
+ # this is the milkshake initializer
3
+ require 'rubygems'
4
+ require 'milkshake/automagic'
@@ -0,0 +1,2 @@
1
+ ActionController::Routing::Routes.draw do |map|
2
+ end
@@ -0,0 +1,7 @@
1
+ require 'test_helper'
2
+
3
+ class MilkshakeTest < Test::Unit::TestCase
4
+ should "probably rename this file and start testing for real" do
5
+ flunk "hey buddy, you should probably rename this file and start testing for real"
6
+ end
7
+ end
@@ -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 'milkshake'
8
+
9
+ class Test::Unit::TestCase
10
+ end
metadata ADDED
@@ -0,0 +1,133 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: milkshake
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.0.1
5
+ platform: ruby
6
+ authors:
7
+ - Simon Menke
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+
12
+ date: 2009-09-30 00:00:00 +02:00
13
+ default_executable: milkshake
14
+ dependencies:
15
+ - !ruby/object:Gem::Dependency
16
+ name: thoughtbot-shoulda
17
+ type: :development
18
+ version_requirement:
19
+ version_requirements: !ruby/object:Gem::Requirement
20
+ requirements:
21
+ - - ">="
22
+ - !ruby/object:Gem::Version
23
+ version: "0"
24
+ version:
25
+ - !ruby/object:Gem::Dependency
26
+ name: yard
27
+ type: :development
28
+ version_requirement:
29
+ version_requirements: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - ">="
32
+ - !ruby/object:Gem::Version
33
+ version: "0"
34
+ version:
35
+ - !ruby/object:Gem::Dependency
36
+ name: thor
37
+ type: :runtime
38
+ version_requirement:
39
+ version_requirements: !ruby/object:Gem::Requirement
40
+ requirements:
41
+ - - ">="
42
+ - !ruby/object:Gem::Version
43
+ version: "0"
44
+ version:
45
+ - !ruby/object:Gem::Dependency
46
+ name: snapshots
47
+ type: :runtime
48
+ version_requirement:
49
+ version_requirements: !ruby/object:Gem::Requirement
50
+ requirements:
51
+ - - ">="
52
+ - !ruby/object:Gem::Version
53
+ version: "0"
54
+ version:
55
+ description: Compose rails applications using several smaller rails applications
56
+ email: simon@mrhenry.be
57
+ engine_dependencies: {}
58
+
59
+ executables:
60
+ - milkshake
61
+ extensions: []
62
+
63
+ extra_rdoc_files:
64
+ - LICENSE
65
+ - README.rdoc
66
+ files:
67
+ - .document
68
+ - .gitignore
69
+ - LICENSE
70
+ - README.rdoc
71
+ - Rakefile
72
+ - VERSION
73
+ - bin/milkshake
74
+ - lib/milkshake.rb
75
+ - lib/milkshake/app.rb
76
+ - lib/milkshake/app/actions.rb
77
+ - lib/milkshake/app/defaults.rb
78
+ - lib/milkshake/app/helpers.rb
79
+ - lib/milkshake/automagic.rb
80
+ - lib/milkshake/cache.rb
81
+ - lib/milkshake/dependency_resolver.rb
82
+ - lib/milkshake/environment.rb
83
+ - lib/milkshake/extender.rb
84
+ - lib/milkshake/linker.rb
85
+ - lib/milkshake/loader.rb
86
+ - lib/milkshake/rails_extentions/boot.rb
87
+ - lib/milkshake/rails_extentions/configuration.rb
88
+ - lib/milkshake/rails_extentions/initializer.rb
89
+ - lib/milkshake/rails_extentions/migrations.rb
90
+ - lib/milkshake/rails_fallbacks/application_controller.rb
91
+ - lib/milkshake/rubygems_extentions/specification.rb
92
+ - lib/milkshake/template.rb
93
+ - lib/milkshake/validator.rb
94
+ - milkshake.gemspec
95
+ - templates/gitignore
96
+ - templates/gitignore_for_data
97
+ - templates/jeweler.rake
98
+ - templates/milkshake.yml
99
+ - templates/preinitializer.rb
100
+ - templates/routes.rb
101
+ - test/milkshake_test.rb
102
+ - test/test_helper.rb
103
+ has_rdoc: true
104
+ homepage: http://github.com/simonmenke/milkshake
105
+ licenses: []
106
+
107
+ post_install_message:
108
+ rdoc_options:
109
+ - --charset=UTF-8
110
+ require_paths:
111
+ - lib
112
+ required_ruby_version: !ruby/object:Gem::Requirement
113
+ requirements:
114
+ - - ">="
115
+ - !ruby/object:Gem::Version
116
+ version: "0"
117
+ version:
118
+ required_rubygems_version: !ruby/object:Gem::Requirement
119
+ requirements:
120
+ - - ">="
121
+ - !ruby/object:Gem::Version
122
+ version: "0"
123
+ version:
124
+ requirements: []
125
+
126
+ rubyforge_project:
127
+ rubygems_version: 1.3.5
128
+ signing_key:
129
+ specification_version: 3
130
+ summary: Make composite rails applications
131
+ test_files:
132
+ - test/milkshake_test.rb
133
+ - test/test_helper.rb