totem 0.0.4 → 0.0.5
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/README.md +49 -16
- data/Rakefile +3 -2
- data/lib/totem.rb +18 -0
- data/lib/totem/shell.rb +9 -1
- data/lib/totem/shell_cmds/console.rb +0 -8
- data/lib/totem/version.rb +1 -1
- data/totem.gemspec +4 -1
- metadata +32 -4
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: a738bec72280ea0baf97f9860a2238ea0579f84a
|
4
|
+
data.tar.gz: 80ce4e412fed17d5184416406bc72d97165b067f
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 7a38f51673de6d90b89411cb151296f6a586caba29c8bac1e107d76b01cd4c1fa585828fed5ac929c5a3d8ee42abb43712059a5d608a49a89c49e9fd31d97503
|
7
|
+
data.tar.gz: 666ca16224d5a57a6e62c85ba1b82a07fbf2acdc43c189eb110f65944654f81ae6b517b85466cc051e6f9987233902cf1a4aa45fece8b0eb24d0971b1bd9a605
|
data/README.md
CHANGED
@@ -1,16 +1,20 @@
|
|
1
1
|
# Totem
|
2
2
|
|
3
|
-
Totem is a
|
3
|
+
Totem is a Ruby gem for creating Ruby projects.
|
4
4
|
It's like having a Rails project folder without the Rails dependency.
|
5
5
|
|
6
|
-
|
7
|
-
- Ruby on Rails inspired folder structure.
|
8
|
-
-
|
9
|
-
-
|
10
|
-
-
|
11
|
-
-
|
12
|
-
-
|
13
|
-
|
6
|
+
##### Goals:
|
7
|
+
- Use a Ruby on Rails inspired folder structure because many developers are familiar with it.
|
8
|
+
- Keep the gem lightweight with simple and easy to understand code.
|
9
|
+
- Prefer built in Ruby classes in order to avoid third party dependencies.
|
10
|
+
- Design from day one for MRI and JRuby.
|
11
|
+
- Make it easily extensible.
|
12
|
+
- Maintain thread safety so that it can be used with gems such as [Tribe](https://github.com/chadrem/tribe) or [Celluloid](https://github.com/celluloid/celluloid).
|
13
|
+
|
14
|
+
##### Features:
|
15
|
+
- console
|
16
|
+
- logger
|
17
|
+
- environments (development, production, stage, etc).
|
14
18
|
|
15
19
|
## Installation
|
16
20
|
|
@@ -26,22 +30,51 @@ Or install it yourself as:
|
|
26
30
|
|
27
31
|
$ gem install totem
|
28
32
|
|
29
|
-
##
|
33
|
+
## Create a project
|
30
34
|
|
31
|
-
Create a new project called
|
35
|
+
Create a new project called `my_app` in the current directory:
|
32
36
|
|
33
|
-
$ totem new my_app
|
37
|
+
$ bundle exec totem new my_app
|
34
38
|
|
35
|
-
You must now setup Bundler (and rvm, rbenv, etc) for your new project:
|
39
|
+
You must now setup Bundler (and rvm, rbenv, etc if you use them) for your new project:
|
36
40
|
|
37
41
|
$ bundle
|
38
42
|
|
39
|
-
You can now create your custom classes in the
|
40
|
-
You will need to manually
|
43
|
+
You can now create your custom classes in the `app` directory.
|
44
|
+
You will need to manually `require` your classes in `app/loader.rb` since Tribe doesn't have an auto-loader.
|
41
45
|
|
42
46
|
Totem comes with an IRB based console similar to Rails:
|
43
47
|
|
44
|
-
$ totem console
|
48
|
+
$ bundle exec totem console
|
49
|
+
|
50
|
+
## Totem API
|
51
|
+
|
52
|
+
Totem comes with some built in methods that should be familiar to any Rails developer.
|
53
|
+
Copy and paste the below code into `app/my_class.rb`.
|
54
|
+
You can then run this example in the console by entering `MyClass.new.run`.
|
55
|
+
Don't forget, you need to register this class in `app/loader.rb` with `require my_class`.
|
56
|
+
|
57
|
+
class MyClass
|
58
|
+
def run
|
59
|
+
puts 'Totem provides a few class variables to simplify programming...'
|
60
|
+
puts " Root: #{Totem.root}"
|
61
|
+
puts " Environment: #{Totem.env}"
|
62
|
+
puts
|
63
|
+
|
64
|
+
puts 'Totem includes a logger...'
|
65
|
+
Totem.logger.error('Example error log entry')
|
66
|
+
puts " Check your #{Totem.log_file_path} to see the entry."
|
67
|
+
puts
|
68
|
+
|
69
|
+
puts 'Enjoy!'
|
70
|
+
end
|
71
|
+
end
|
72
|
+
|
73
|
+
## Add-ons
|
74
|
+
|
75
|
+
Below is a list of available add-ons that extend the functionality of a Totem project:
|
76
|
+
|
77
|
+
- [totem_activerecord](https://github.com/chadrem/totem_activerecord): The Rails database library
|
45
78
|
|
46
79
|
## Contributing
|
47
80
|
|
data/Rakefile
CHANGED
@@ -1,10 +1,11 @@
|
|
1
1
|
require 'bundler/gem_tasks'
|
2
2
|
|
3
|
-
desc 'Start
|
3
|
+
desc 'Start an IRB session'
|
4
4
|
task :console do
|
5
5
|
$LOAD_PATH.unshift(File.join(File.dirname(__FILE__), 'lib'))
|
6
6
|
|
7
7
|
require 'totem'
|
8
8
|
|
9
|
-
|
9
|
+
ARGV.clear
|
10
|
+
IRB.start
|
10
11
|
end
|
data/lib/totem.rb
CHANGED
@@ -13,8 +13,10 @@ module Totem
|
|
13
13
|
@setup = true
|
14
14
|
@root = root
|
15
15
|
Bundler.require(Totem.env.to_sym)
|
16
|
+
run_callbacks(:before_load_app)
|
16
17
|
$LOAD_PATH.unshift(root + '/app')
|
17
18
|
load_app
|
19
|
+
run_callbacks(:after_load_app)
|
18
20
|
|
19
21
|
return true
|
20
22
|
end
|
@@ -51,6 +53,15 @@ module Totem
|
|
51
53
|
return @logger
|
52
54
|
end
|
53
55
|
|
56
|
+
def self.register_callback(type, callback=nil, &block)
|
57
|
+
@callbacks ||= {}
|
58
|
+
(@callbacks[type] ||= []) << (callback || block)
|
59
|
+
|
60
|
+
return true
|
61
|
+
end
|
62
|
+
|
63
|
+
private
|
64
|
+
|
54
65
|
def self.log_to_stdout
|
55
66
|
init_logger($stdout)
|
56
67
|
|
@@ -82,4 +93,11 @@ module Totem
|
|
82
93
|
|
83
94
|
return nil
|
84
95
|
end
|
96
|
+
|
97
|
+
def self.run_callbacks(type)
|
98
|
+
@callbacks ||= {}
|
99
|
+
(@callbacks[type] || []).each { |cb| cb.call }
|
100
|
+
|
101
|
+
return nil
|
102
|
+
end
|
85
103
|
end
|
data/lib/totem/shell.rb
CHANGED
@@ -13,6 +13,14 @@ module Totem
|
|
13
13
|
end
|
14
14
|
|
15
15
|
def run
|
16
|
+
env_path = 'config/environment.rb'
|
17
|
+
if File.exists?(env_path)
|
18
|
+
load(env_path)
|
19
|
+
else
|
20
|
+
puts "Unable to find #{env_path}. You must run this command from your project root directory."
|
21
|
+
exit
|
22
|
+
end
|
23
|
+
|
16
24
|
if @args[0].nil?
|
17
25
|
puts_usage
|
18
26
|
return
|
@@ -42,7 +50,7 @@ module Totem
|
|
42
50
|
private
|
43
51
|
|
44
52
|
def puts_usage
|
45
|
-
puts "Usage:\n totem <command>"
|
53
|
+
puts "Usage:\n bundle exec totem <command>"
|
46
54
|
puts
|
47
55
|
puts "Commands:\n #{self.class.cmds.keys.join(', ')}"
|
48
56
|
end
|
@@ -4,14 +4,6 @@ module Totem
|
|
4
4
|
module ShellCmds
|
5
5
|
class Console < Totem::ShellCmds::Base
|
6
6
|
def run
|
7
|
-
env_path = 'config/environment.rb'
|
8
|
-
if File.exists?(env_path)
|
9
|
-
load(env_path)
|
10
|
-
else
|
11
|
-
puts "Unable to find #{env_path}. You must run this command from your project root directory."
|
12
|
-
exit
|
13
|
-
end
|
14
|
-
|
15
7
|
ARGV.clear
|
16
8
|
IRB.start
|
17
9
|
end
|
data/lib/totem/version.rb
CHANGED
data/totem.gemspec
CHANGED
@@ -8,7 +8,7 @@ Gem::Specification.new do |gem|
|
|
8
8
|
gem.version = Totem::VERSION
|
9
9
|
gem.authors = ['Chad Remesch']
|
10
10
|
gem.email = ['chad@remesch.com']
|
11
|
-
gem.description = %q{Totem is a
|
11
|
+
gem.description = %q{Totem is a Ruby gem for creating Ruby projects.}
|
12
12
|
gem.summary = %q{It's like having a Rails project folder without the Rails dependency.}
|
13
13
|
gem.homepage = 'https://github.com/chadrem/totem'
|
14
14
|
|
@@ -16,4 +16,7 @@ Gem::Specification.new do |gem|
|
|
16
16
|
gem.executables = gem.files.grep(%r{^bin/}).map{ |f| File.basename(f) }
|
17
17
|
gem.test_files = gem.files.grep(%r{^(test|spec|features)/})
|
18
18
|
gem.require_paths = ["lib"]
|
19
|
+
|
20
|
+
gem.add_development_dependency("bundler", "~> 1.5")
|
21
|
+
gem.add_development_dependency("rake")
|
19
22
|
end
|
metadata
CHANGED
@@ -1,16 +1,44 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: totem
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.5
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Chad Remesch
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2014-03-
|
12
|
-
dependencies:
|
13
|
-
|
11
|
+
date: 2014-03-13 00:00:00.000000000 Z
|
12
|
+
dependencies:
|
13
|
+
- !ruby/object:Gem::Dependency
|
14
|
+
name: bundler
|
15
|
+
requirement: !ruby/object:Gem::Requirement
|
16
|
+
requirements:
|
17
|
+
- - "~>"
|
18
|
+
- !ruby/object:Gem::Version
|
19
|
+
version: '1.5'
|
20
|
+
type: :development
|
21
|
+
prerelease: false
|
22
|
+
version_requirements: !ruby/object:Gem::Requirement
|
23
|
+
requirements:
|
24
|
+
- - "~>"
|
25
|
+
- !ruby/object:Gem::Version
|
26
|
+
version: '1.5'
|
27
|
+
- !ruby/object:Gem::Dependency
|
28
|
+
name: rake
|
29
|
+
requirement: !ruby/object:Gem::Requirement
|
30
|
+
requirements:
|
31
|
+
- - ">="
|
32
|
+
- !ruby/object:Gem::Version
|
33
|
+
version: '0'
|
34
|
+
type: :development
|
35
|
+
prerelease: false
|
36
|
+
version_requirements: !ruby/object:Gem::Requirement
|
37
|
+
requirements:
|
38
|
+
- - ">="
|
39
|
+
- !ruby/object:Gem::Version
|
40
|
+
version: '0'
|
41
|
+
description: Totem is a Ruby gem for creating Ruby projects.
|
14
42
|
email:
|
15
43
|
- chad@remesch.com
|
16
44
|
executables:
|