teamster 0.3.3 → 0.3.4
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/README.md +53 -26
- data/VERSION +1 -1
- data/bin/teamster +36 -1
- data/lib/teamster/login.rb +9 -2
- data/lib/teamster.rb +1 -0
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: a6206844754e6167984d2917877c66c578b11754
|
4
|
+
data.tar.gz: ca07df0e85a826f4e0d70fe699599acac6529d24
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 33d2f2642c2626cf1ac9b3f7156eda22925ac13fa6315f6406bbfc3a1eaf50b9dcd87fcd76347930ad6858a6545f0c0296dd86ee140662bb0cc3d400ceb58afd
|
7
|
+
data.tar.gz: fb59b51f9aa89d9678f209945d18d4d1e40f51c9947f0cd29e79d11a1252525dd717b86729b05245dbb01b5917a5c441b49936063520b21c52b27a5dbd9436fb
|
data/README.md
CHANGED
@@ -1,24 +1,20 @@
|
|
1
|
-
teamster
|
2
|
-
========
|
1
|
+
# teamster
|
3
2
|
|
4
3
|
A simple bare-bones extensible web portal for individuals or small teams
|
5
4
|
|
6
5
|
|
7
|
-
Dependencies
|
8
|
-
============
|
6
|
+
#### Dependencies
|
9
7
|
|
10
8
|
To run teamster, there is a few dependencies:
|
11
9
|
|
12
10
|
* Only supported in OS X and linux. Not test on Windows. YMMV.
|
13
11
|
|
14
|
-
Install
|
15
|
-
=======
|
12
|
+
#### Install
|
16
13
|
|
17
14
|
Teamster has been packaged into a gem. To install, simply run `gem install teamster`.
|
18
15
|
|
19
16
|
|
20
|
-
Usage
|
21
|
-
=====
|
17
|
+
## Usage
|
22
18
|
|
23
19
|
* Create a new folder where you want your site to live and navigate into it: `mkdir new-site && cd new-site`
|
24
20
|
* Initialize teamster and answer some configuration questions: `teamster init`
|
@@ -27,41 +23,37 @@ Usage
|
|
27
23
|
Open a browser and point to http://localhost:9292. A bare teamster page should be shown.
|
28
24
|
|
29
25
|
|
30
|
-
Running In A "Production" Environment
|
31
|
-
=====================================
|
26
|
+
## Running In A "Production" Environment
|
32
27
|
|
33
28
|
I do not recommended this application be exposed to the wide Internet just yet, but it should be secure enough for an individual or small team to use over their private LAN.
|
34
29
|
|
35
30
|
When the `--prod` flag is passed, teamster will not run using rackup, but will utilize the [Puma](http://puma.io/) app server to serve itself. It will create and bind itself to a UNIX socket file and a Puma state file.
|
36
31
|
|
37
|
-
Use With Nginx
|
38
|
-
--------------
|
32
|
+
#### Use With Nginx
|
39
33
|
|
40
34
|
Personally, I'm using this in conjunction with the popular [Nginx](http://nginx.org/) web server. To follow these, Nginx must already be installed on your system.
|
41
35
|
|
42
36
|
* Run teamster in production mode: `teamster start --prod --socket-file /tmp/teamster.sock --state-file /srv/my-site/app.state`
|
43
37
|
* In the nginx site configuration file, add the following:
|
44
38
|
|
45
|
-
|
46
|
-
|
47
|
-
|
48
|
-
|
49
|
-
|
50
|
-
|
51
|
-
|
52
|
-
|
53
|
-
|
54
|
-
|
55
|
-
|
56
|
-
> }
|
39
|
+
upstream app {
|
40
|
+
server unix:///tmp/teamster.sock;
|
41
|
+
}
|
42
|
+
|
43
|
+
server {
|
44
|
+
server_name my-site.example.com;
|
45
|
+
|
46
|
+
location / {
|
47
|
+
proxy_pass http://app;
|
48
|
+
}
|
49
|
+
}
|
57
50
|
|
58
51
|
* Restart nginx.
|
59
52
|
|
60
53
|
Open a browser and point to http://my-site.example.com. A bare teamster page should be shown.
|
61
54
|
|
62
55
|
|
63
|
-
Create Modules
|
64
|
-
==============
|
56
|
+
## Create Modules
|
65
57
|
|
66
58
|
To create your custom modules:
|
67
59
|
|
@@ -74,3 +66,38 @@ This will create the following files in your site folder:
|
|
74
66
|
* lib/teamster-modules/MODULENAME/views/MODULENAME.erb
|
75
67
|
|
76
68
|
In MODULENAME.rb, a class MODULENAME will be created. While it may sub-class from Teamster::Module::Base, it is also a sub-class of Sinatra::Base. When developing it, you can use helper methods and other nifty stuff available from Sinatra. However, do take note of the scoping.
|
69
|
+
|
70
|
+
|
71
|
+
#### Helpers Available To Modules
|
72
|
+
|
73
|
+
This is a small list of helper methods that can be used in your modules.
|
74
|
+
|
75
|
+
* **logged_in?**
|
76
|
+
|
77
|
+
This returns `true` or `false`. Useful to check if a user has logged in.
|
78
|
+
|
79
|
+
get '/login_checker' do
|
80
|
+
if logged_in?
|
81
|
+
puts "User has logged in."
|
82
|
+
else
|
83
|
+
puts "You are not logged in."
|
84
|
+
end
|
85
|
+
end
|
86
|
+
|
87
|
+
* **login_required**
|
88
|
+
|
89
|
+
This halts a route from being run if a user has not yet logged in. Once a user has logged in, the route will be reloaded. The way to use this helper is:
|
90
|
+
|
91
|
+
get '/protected_route' do
|
92
|
+
login_required
|
93
|
+
do_stuff
|
94
|
+
end
|
95
|
+
|
96
|
+
* **current_user**
|
97
|
+
|
98
|
+
This just returns the username (or canonical name) of the currently logged in user. Since login is not yet implemented, this returns some random string.
|
99
|
+
|
100
|
+
get '/show_name' do
|
101
|
+
login_required
|
102
|
+
puts "Hello, #{current_user}"
|
103
|
+
end
|
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
0.3.
|
1
|
+
0.3.4
|
data/bin/teamster
CHANGED
@@ -1,5 +1,5 @@
|
|
1
1
|
#!/usr/bin/env ruby
|
2
|
-
['fileutils', 'getoptlong', 'yaml'].each do |gemfile|
|
2
|
+
['fileutils', 'getoptlong', 'yaml', 'rubygems/package', 'zlib'].each do |gemfile|
|
3
3
|
require gemfile
|
4
4
|
end
|
5
5
|
|
@@ -23,6 +23,8 @@ class TeamsterApp
|
|
23
23
|
["--help", GetoptLong::NO_ARGUMENT ],
|
24
24
|
["--overwrite", GetoptLong::NO_ARGUMENT ],
|
25
25
|
["--create-module", GetoptLong::REQUIRED_ARGUMENT],
|
26
|
+
["--import-module", GetoptLong::REQUIRED_ARGUMENT],
|
27
|
+
["--export-module", GetoptLong::REQUIRED_ARGUMENT],
|
26
28
|
["--socket-file", GetoptLong::REQUIRED_ARGUMENT],
|
27
29
|
["--state-file", GetoptLong::REQUIRED_ARGUMENT])
|
28
30
|
@config = {}.tap do |hsh|
|
@@ -42,6 +44,10 @@ class TeamsterApp
|
|
42
44
|
quit show_version
|
43
45
|
elsif name = @config[:create_module]
|
44
46
|
create_module_for name.downcase
|
47
|
+
elsif name = @config[:import_module]
|
48
|
+
import_module_for name.downcase
|
49
|
+
elsif name = @config[:export_module]
|
50
|
+
export_module_for name.downcase
|
45
51
|
elsif ARGV.size == 1
|
46
52
|
command = ARGV.first.to_sym
|
47
53
|
send command
|
@@ -144,6 +150,35 @@ class TeamsterApp
|
|
144
150
|
puts "Summary View : \"lib/teamster-modules/#{name}/views/#{name}_summary.erb\""
|
145
151
|
end
|
146
152
|
|
153
|
+
def import_module_for(name)
|
154
|
+
puts "Importing module: #{name}"
|
155
|
+
zip_file = "#{name}.zip"
|
156
|
+
if File.exists?(zip_file)
|
157
|
+
if `which unzip`.length != 0
|
158
|
+
`unzip #{zip_file}`
|
159
|
+
puts "\nSuccessfully imported #{name}. Please restart teamster to use."
|
160
|
+
else
|
161
|
+
puts "\nUnable to import module. Export depends on cli tool \"unzip\"."
|
162
|
+
end
|
163
|
+
else
|
164
|
+
puts "Unable to find file: #{zip_file}"
|
165
|
+
end
|
166
|
+
end
|
167
|
+
|
168
|
+
def export_module_for(name)
|
169
|
+
puts "Exporting module: #{name}"
|
170
|
+
zip_file = "#{name}.zip"
|
171
|
+
puts "The following files will be zipped:"
|
172
|
+
puts "- lib/teamster-modules/#{name}.rb"
|
173
|
+
puts '- Everything in folder lib/teamster-modules/#{name}/'
|
174
|
+
if `which zip`.length != 0
|
175
|
+
`zip -r #{zip_file} lib/teamster-modules/#{name}.rb lib/teamster-modules/#{name}/`
|
176
|
+
puts "\nExported to #{zip_file}!"
|
177
|
+
else
|
178
|
+
puts "\nUnable to export module. Export depends on cli tool \"zip\"."
|
179
|
+
end
|
180
|
+
end
|
181
|
+
|
147
182
|
def create_file(filename, method, *args)
|
148
183
|
case [File.exists?(filename), !!@config[:overwrite]]
|
149
184
|
when [true, false]
|
data/lib/teamster/login.rb
CHANGED
@@ -1,14 +1,21 @@
|
|
1
1
|
module Teamster
|
2
2
|
module Core
|
3
3
|
class Login < Sinatra::Base
|
4
|
+
helpers do
|
5
|
+
def redirect_back
|
6
|
+
referrer = URI::parse(request.referrer)
|
7
|
+
redirect to referrer.path
|
8
|
+
end
|
9
|
+
end
|
10
|
+
|
4
11
|
get '/login/?' do
|
5
12
|
session[:current_user] = "A Registered User (Login Not Implemented)"
|
6
|
-
|
13
|
+
redirect_back
|
7
14
|
end
|
8
15
|
|
9
16
|
get '/logout/?' do
|
10
17
|
session[:current_user] = nil
|
11
|
-
|
18
|
+
redirect_back
|
12
19
|
end
|
13
20
|
end
|
14
21
|
end
|
data/lib/teamster.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: teamster
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.3.
|
4
|
+
version: 0.3.4
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Nur Muhammad Bin Sirat
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2014-04-
|
11
|
+
date: 2014-04-24 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: puma
|