ruby-app 0.1.6 → 0.1.7

Sign up to get free protection for your applications and to get access to all the features.
data/.gitignore CHANGED
@@ -3,3 +3,4 @@ Gemfile.lock
3
3
  _1
4
4
  _0
5
5
  _2
6
+ TODO
data/README.md CHANGED
@@ -1,7 +1,7 @@
1
1
  RubyApp
2
2
  =======
3
3
 
4
- Little ruby application template. For creates light ruby apps (daemons, EventMachine-apps, ...).
4
+ Little ruby application template. For create light ruby apps (daemons, EventMachine-apps, ...).
5
5
  Supports bundler, environments, rails dirs tree.
6
6
 
7
7
  $ gem install ruby-app
@@ -1,7 +1,9 @@
1
1
  # -*- encoding : utf-8 -*-
2
2
 
3
3
  class Application
4
+
4
5
  class << self
6
+
5
7
  def tmp_dir
6
8
  @tmp_dir ||= File.join(root, %w{tmp})
7
9
  end
@@ -11,8 +13,26 @@ class Application
11
13
  end
12
14
 
13
15
  def env
14
- @env ||= ENV['APP_ENV'] || ENV['RAILS_ENV'] || 'development'
16
+ @env ||= begin
17
+ env = ENV['APP_ENV'] || ENV['RAILS_ENV']
18
+
19
+ # if not specify env, try find file with env config/environment.current
20
+ # which created this file by a capistrano, by example
21
+ unless env
22
+ path = File.join(root, %w{ config environment.current })
23
+ if File.exists?(path)
24
+ env = File.read(path)
25
+ env.strip!
26
+ end
27
+ end
28
+
29
+ env = 'development' unless env
30
+
31
+ env
32
+ end
15
33
  end
34
+
35
+ alias :environment :env
16
36
 
17
37
  def logger
18
38
  @logger ||= begin
@@ -38,7 +58,11 @@ class Application
38
58
  def initializer_paths
39
59
  @initializer_paths ||= []
40
60
  end
61
+
62
+ def bundler_group
63
+ end
64
+
41
65
  end
42
66
  end
43
67
 
44
- A = App = Application unless defined?(App)
68
+ App = Application unless defined?(App)
@@ -8,6 +8,28 @@ class CommonConfig
8
8
  s.instance_eval(&block)
9
9
  @@configs.merge!(s.configs)
10
10
  end
11
+
12
+ def self.load(config_file, shouldbe = false)
13
+ if File.exists?(config_file)
14
+ require 'yaml'
15
+
16
+ h = YAML.load_file(config_file)
17
+ if h.is_a?(Hash)
18
+ h.symbolize_keys!
19
+ @@configs.merge!(h)
20
+ else
21
+ raise "config should be a Hash, but not #{h.inspect}"
22
+ end
23
+ else
24
+ if shouldbe
25
+ raise "config file not found, create! #{config_file.inspect}"
26
+ end
27
+ end
28
+ end
29
+
30
+ def self.save(filename)
31
+ File.open(filename, 'w'){|f| f.write YAML.dump(@@configs) }
32
+ end
11
33
 
12
34
  class Scope
13
35
  def initialize
@@ -21,10 +43,10 @@ class CommonConfig
21
43
  def method_missing(name, *params, &block)
22
44
  if name.to_s =~ /_address$/i
23
45
  require 'ostruct'
24
- @configs[name] = block || OpenStruct.new(:host => params[0], :port => params[1].to_i)
46
+ @configs[name.to_sym] = block || OpenStruct.new(:host => params[0], :port => params[1].to_i)
25
47
  else
26
48
  params = params[0] if params.size == 1
27
- @configs[name] = block || params
49
+ @configs[name.to_sym] = block || params
28
50
  end
29
51
  end
30
52
  end
@@ -32,20 +54,19 @@ class CommonConfig
32
54
  def self.[]=(option, value)
33
55
  @@configs[option.to_sym] = value
34
56
  end
35
-
36
- def self.[](option)
37
- if @@configs.key?(option)
38
- res = @@configs[option]
39
- res.is_a?(Proc) ? res.call : res
40
- else
41
- super
42
- end
57
+
58
+ def self.has_key?(key)
59
+ @@configs.key?(key.to_sym)
60
+ end
61
+
62
+ def self.try(method)
63
+ self.send(method) rescue nil
43
64
  end
44
65
 
45
- def self.method_missing(*args)
46
- if @@configs.key?(args[0])
47
- res = @@configs[args[0]]
48
- res.is_a?(Proc) ? res.call : res
66
+ def self.method_missing(name, *args)
67
+ if has_key?(name)
68
+ res = @@configs[name.to_sym]
69
+ res.is_a?(Proc) ? res.call : res
49
70
  else
50
71
  super
51
72
  end
@@ -1,7 +1,5 @@
1
1
  # -*- encoding : utf-8 -*-
2
2
 
3
- #require 'yaml'
4
-
5
3
  local_root = File.dirname(__FILE__)
6
4
 
7
5
  # app from gem
@@ -19,8 +17,6 @@ require File.join(local_root, 'default_config')
19
17
  # gems from app
20
18
  Bundler.require(:default, App.env.to_sym)
21
19
 
22
- GC.start
23
-
24
20
  # AS dependencies
25
21
  require 'active_support/dependencies'
26
22
  require 'active_support/core_ext/numeric/time'
@@ -29,6 +25,12 @@ require 'active_support/core_ext/object/blank'
29
25
  # load application app
30
26
  require File.join(App.root, %w{lib application})
31
27
 
28
+ # require App.bundler_group if defined
29
+ Bundler.require(App.bundler_group, "#{App.bundler_group}_#{App.env}") if App.bundler_group
30
+
31
+ # for free usless data from bundler and gems
32
+ GC.start
33
+
32
34
  unless defined?(Rake)
33
35
  App.logger.info "Loading #{App.name}[#{App.env}] ..."
34
36
  end
@@ -36,6 +38,10 @@ end
36
38
  # default config from app
37
39
  require File.join(App.root, %w{config config})
38
40
 
41
+ # Load configs from yaml
42
+ CommonConfig.load(File.join(App.root, %w{config config.yml}))
43
+ CommonConfig.load(File.join(App.root, ['config', "config.yml.#{App.env}"]))
44
+
39
45
  # configs from app for env
40
46
  begin
41
47
  require File.join(App.root, %W( config environments #{App.env}))
@@ -55,16 +61,16 @@ dirs.each do |a|
55
61
  ActiveSupport::Dependencies::autoload_paths << a
56
62
  end
57
63
 
58
- # load initializers app
59
- Dir["#{App.root}/config/initializers/*.rb"].each{ |x| load(x) }
60
-
61
64
  # load initializers from other gems
62
65
  unless App.initializer_paths.empty?
63
66
  App.initializer_paths.flatten.each do |path|
64
67
  require File.expand_path(path)
65
68
  end
66
69
  end
67
-
70
+
71
+ # load initializers app
72
+ Dir["#{App.root}/config/initializers/*.rb"].each{ |x| load(x) }
73
+
68
74
  # first load models app
69
75
  Dir["#{App.root}/app/models/*.rb"].each{ |x| require x }
70
76
 
@@ -1,3 +1,3 @@
1
1
  module RubyApp
2
- VERSION = "0.1.6"
2
+ VERSION = "0.1.7"
3
3
  end
data/spec/app_spec.rb CHANGED
@@ -28,6 +28,15 @@ describe "RubyApp" do
28
28
  App.config.proc_test.should == "bbbccc"
29
29
  end
30
30
 
31
+ it "load config from file config/config.yml" do
32
+ App.config.file.should == :yml
33
+ end
34
+
35
+ it "safe check parameter in config" do
36
+ App.config.try(:file).should == :yml
37
+ App.config.try(:file2).should == nil
38
+ end
39
+
31
40
  it "should load extensions" do
32
41
  App.some_gem_method.should == "some gem method"
33
42
  end
@@ -0,0 +1,2 @@
1
+ file:
2
+ :yml
metadata CHANGED
@@ -1,115 +1,120 @@
1
- --- !ruby/object:Gem::Specification
1
+ --- !ruby/object:Gem::Specification
2
2
  name: ruby-app
3
- version: !ruby/object:Gem::Version
4
- hash: 23
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.1.7
5
5
  prerelease:
6
- segments:
7
- - 0
8
- - 1
9
- - 6
10
- version: 0.1.6
11
6
  platform: ruby
12
- authors:
7
+ authors:
13
8
  - Makarchev Konstantin
14
9
  autorequire:
15
10
  bindir: bin
16
11
  cert_chain: []
17
-
18
- date: 2012-06-23 00:00:00 Z
19
- dependencies:
20
- - !ruby/object:Gem::Dependency
21
- type: :runtime
22
- requirement: &id001 !ruby/object:Gem::Requirement
23
- none: false
24
- requirements:
25
- - - ">="
26
- - !ruby/object:Gem::Version
27
- hash: 3
28
- segments:
29
- - 0
30
- version: "0"
31
- version_requirements: *id001
32
- prerelease: false
12
+ date: 2012-06-30 00:00:00.000000000 Z
13
+ dependencies:
14
+ - !ruby/object:Gem::Dependency
33
15
  name: activesupport
34
- - !ruby/object:Gem::Dependency
35
- type: :runtime
36
- requirement: &id002 !ruby/object:Gem::Requirement
16
+ requirement: !ruby/object:Gem::Requirement
37
17
  none: false
38
- requirements:
39
- - - ">="
40
- - !ruby/object:Gem::Version
41
- hash: 3
42
- segments:
43
- - 0
44
- version: "0"
45
- version_requirements: *id002
18
+ requirements:
19
+ - - ! '>='
20
+ - !ruby/object:Gem::Version
21
+ version: '0'
22
+ type: :runtime
46
23
  prerelease: false
24
+ version_requirements: !ruby/object:Gem::Requirement
25
+ none: false
26
+ requirements:
27
+ - - ! '>='
28
+ - !ruby/object:Gem::Version
29
+ version: '0'
30
+ - !ruby/object:Gem::Dependency
47
31
  name: rake
48
- - !ruby/object:Gem::Dependency
49
- type: :runtime
50
- requirement: &id003 !ruby/object:Gem::Requirement
32
+ requirement: !ruby/object:Gem::Requirement
51
33
  none: false
52
- requirements:
53
- - - ">="
54
- - !ruby/object:Gem::Version
55
- hash: 3
56
- segments:
57
- - 0
58
- version: "0"
59
- version_requirements: *id003
34
+ requirements:
35
+ - - ! '>='
36
+ - !ruby/object:Gem::Version
37
+ version: '0'
38
+ type: :runtime
60
39
  prerelease: false
40
+ version_requirements: !ruby/object:Gem::Requirement
41
+ none: false
42
+ requirements:
43
+ - - ! '>='
44
+ - !ruby/object:Gem::Version
45
+ version: '0'
46
+ - !ruby/object:Gem::Dependency
61
47
  name: thor
62
- - !ruby/object:Gem::Dependency
63
- type: :runtime
64
- requirement: &id004 !ruby/object:Gem::Requirement
48
+ requirement: !ruby/object:Gem::Requirement
65
49
  none: false
66
- requirements:
67
- - - ">="
68
- - !ruby/object:Gem::Version
69
- hash: 3
70
- segments:
71
- - 0
72
- version: "0"
73
- version_requirements: *id004
50
+ requirements:
51
+ - - ! '>='
52
+ - !ruby/object:Gem::Version
53
+ version: '0'
54
+ type: :runtime
74
55
  prerelease: false
56
+ version_requirements: !ruby/object:Gem::Requirement
57
+ none: false
58
+ requirements:
59
+ - - ! '>='
60
+ - !ruby/object:Gem::Version
61
+ version: '0'
62
+ - !ruby/object:Gem::Dependency
75
63
  name: bundler
76
- - !ruby/object:Gem::Dependency
77
- type: :development
78
- requirement: &id005 !ruby/object:Gem::Requirement
64
+ requirement: !ruby/object:Gem::Requirement
79
65
  none: false
80
- requirements:
81
- - - ">="
82
- - !ruby/object:Gem::Version
83
- hash: 3
84
- segments:
85
- - 0
86
- version: "0"
87
- version_requirements: *id005
66
+ requirements:
67
+ - - ! '>='
68
+ - !ruby/object:Gem::Version
69
+ version: '0'
70
+ type: :runtime
88
71
  prerelease: false
72
+ version_requirements: !ruby/object:Gem::Requirement
73
+ none: false
74
+ requirements:
75
+ - - ! '>='
76
+ - !ruby/object:Gem::Version
77
+ version: '0'
78
+ - !ruby/object:Gem::Dependency
89
79
  name: rspec
90
- - !ruby/object:Gem::Dependency
91
- type: :development
92
- requirement: &id006 !ruby/object:Gem::Requirement
80
+ requirement: !ruby/object:Gem::Requirement
93
81
  none: false
94
- requirements:
95
- - - ">="
96
- - !ruby/object:Gem::Version
97
- hash: 3
98
- segments:
99
- - 0
100
- version: "0"
101
- version_requirements: *id006
82
+ requirements:
83
+ - - ! '>='
84
+ - !ruby/object:Gem::Version
85
+ version: '0'
86
+ type: :development
102
87
  prerelease: false
88
+ version_requirements: !ruby/object:Gem::Requirement
89
+ none: false
90
+ requirements:
91
+ - - ! '>='
92
+ - !ruby/object:Gem::Version
93
+ version: '0'
94
+ - !ruby/object:Gem::Dependency
103
95
  name: rake
104
- description: Little ruby application template. For creates light ruby apps (daemons, EventMachine-apps, ...). Supports bundler, environments, rails dirs tree.
96
+ requirement: !ruby/object:Gem::Requirement
97
+ none: false
98
+ requirements:
99
+ - - ! '>='
100
+ - !ruby/object:Gem::Version
101
+ version: '0'
102
+ type: :development
103
+ prerelease: false
104
+ version_requirements: !ruby/object:Gem::Requirement
105
+ none: false
106
+ requirements:
107
+ - - ! '>='
108
+ - !ruby/object:Gem::Version
109
+ version: '0'
110
+ description: Little ruby application template. For creates light ruby apps (daemons,
111
+ EventMachine-apps, ...). Supports bundler, environments, rails dirs tree.
105
112
  email: kostya27@gmail.com
106
- executables:
113
+ executables:
107
114
  - ruby-app
108
115
  extensions: []
109
-
110
116
  extra_rdoc_files: []
111
-
112
- files:
117
+ files:
113
118
  - .gitignore
114
119
  - Gemfile
115
120
  - LICENSE
@@ -155,6 +160,7 @@ files:
155
160
  - spec/test_app/bin/.gitkeep
156
161
  - spec/test_app/config/boot.rb
157
162
  - spec/test_app/config/config.rb
163
+ - spec/test_app/config/config.yml
158
164
  - spec/test_app/config/environment.rb
159
165
  - spec/test_app/config/environments/development.rb
160
166
  - spec/test_app/config/environments/production.rb
@@ -167,36 +173,32 @@ files:
167
173
  - spec/test_app/lib/application.rb
168
174
  homepage: http://github.com/kostya/ruby-app
169
175
  licenses: []
170
-
171
176
  post_install_message:
172
177
  rdoc_options: []
173
-
174
- require_paths:
178
+ require_paths:
175
179
  - lib
176
- required_ruby_version: !ruby/object:Gem::Requirement
180
+ required_ruby_version: !ruby/object:Gem::Requirement
177
181
  none: false
178
- requirements:
179
- - - ">="
180
- - !ruby/object:Gem::Version
181
- hash: 3
182
- segments:
182
+ requirements:
183
+ - - ! '>='
184
+ - !ruby/object:Gem::Version
185
+ version: '0'
186
+ segments:
183
187
  - 0
184
- version: "0"
185
- required_rubygems_version: !ruby/object:Gem::Requirement
188
+ hash: -590066895
189
+ required_rubygems_version: !ruby/object:Gem::Requirement
186
190
  none: false
187
- requirements:
188
- - - ">="
189
- - !ruby/object:Gem::Version
190
- hash: 3
191
- segments:
191
+ requirements:
192
+ - - ! '>='
193
+ - !ruby/object:Gem::Version
194
+ version: '0'
195
+ segments:
192
196
  - 0
193
- version: "0"
197
+ hash: -590066895
194
198
  requirements: []
195
-
196
199
  rubyforge_project:
197
200
  rubygems_version: 1.8.24
198
201
  signing_key:
199
202
  specification_version: 3
200
203
  summary: Ruby application template
201
204
  test_files: []
202
-