helios 0.2.0 → 0.2.1
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/Gemfile.lock +30 -29
- data/README.md +45 -15
- data/Rakefile +0 -1
- data/helios.gemspec +4 -4
- data/lib/helios.rb +2 -2
- data/lib/helios/backend/data.rb +0 -2
- data/lib/helios/commands/console.rb +2 -4
- data/lib/helios/commands/server.rb +33 -0
- data/lib/helios/version.rb +1 -1
- metadata +12 -12
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 402e29639eacaa1ba54ba2f4eccefb1ac228be91
|
4
|
+
data.tar.gz: c2f8542dd3218c7a2b97c75aeea6a0cec5c57f76
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 4bfd61221daf7968ccba1a273930dfc0787610ce175e2d2cc0fab8e30fa7828b27c30810d8acf0597e9f5d09239b9ca6d974ad46c3017eb76b758bc214bae877
|
7
|
+
data.tar.gz: 2f8bb05d75f2bef9f6b4fb1f308aa7741bba846a6292aeb6be94b2c58e60d9e1199d919dc8afc838d68e179af1ad39795d60ea370c3daf3bd09376e68750a8d5
|
data/Gemfile.lock
CHANGED
@@ -1,12 +1,12 @@
|
|
1
1
|
PATH
|
2
2
|
remote: .
|
3
3
|
specs:
|
4
|
-
helios (0.2.
|
4
|
+
helios (0.2.1)
|
5
5
|
coffee-script (~> 2.2)
|
6
6
|
commander (~> 4.1)
|
7
7
|
compass (~> 0.12)
|
8
|
-
foreman (~> 0.
|
9
|
-
haml (
|
8
|
+
foreman (~> 0.63)
|
9
|
+
haml (>= 3.1)
|
10
10
|
json (~> 1.7)
|
11
11
|
rack-contrib (~> 1.1)
|
12
12
|
rack-core-data (~> 0.3)
|
@@ -15,12 +15,12 @@ PATH
|
|
15
15
|
rack-push-notification (~> 0.4)
|
16
16
|
rails-database-url (~> 1.0)
|
17
17
|
sinatra (~> 1.3)
|
18
|
-
sinatra-assetpack (~> 0.1)
|
18
|
+
sinatra-assetpack (~> 0.1.7)
|
19
19
|
sinatra-backbone (~> 0.1.0.rc2)
|
20
20
|
sinatra-contrib (~> 1.3)
|
21
21
|
sinatra-param (~> 0.1)
|
22
22
|
sinatra-support (~> 1.2)
|
23
|
-
zurb-foundation (
|
23
|
+
zurb-foundation (= 4.1.2)
|
24
24
|
|
25
25
|
GEM
|
26
26
|
remote: https://rubygems.org/
|
@@ -28,7 +28,7 @@ GEM
|
|
28
28
|
activesupport (3.2.13)
|
29
29
|
i18n (= 0.6.1)
|
30
30
|
multi_json (~> 1.0)
|
31
|
-
backports (3.
|
31
|
+
backports (3.3.0)
|
32
32
|
chunky_png (1.2.8)
|
33
33
|
coffee-script (2.2.0)
|
34
34
|
coffee-script-source
|
@@ -40,16 +40,18 @@ GEM
|
|
40
40
|
chunky_png (~> 1.2)
|
41
41
|
fssm (>= 0.2.7)
|
42
42
|
sass (~> 3.1)
|
43
|
-
diff-lcs (1.2.
|
43
|
+
diff-lcs (1.2.4)
|
44
|
+
dotenv (0.7.0)
|
44
45
|
eventmachine (1.0.3)
|
45
|
-
excon (0.17.0)
|
46
46
|
execjs (1.4.0)
|
47
47
|
multi_json (~> 1.0)
|
48
|
-
foreman (0.
|
48
|
+
foreman (0.63.0)
|
49
|
+
dotenv (>= 0.7)
|
49
50
|
thor (>= 0.13.6)
|
50
51
|
fssm (0.2.10)
|
51
|
-
haml (
|
52
|
-
|
52
|
+
haml (4.0.2)
|
53
|
+
tilt
|
54
|
+
highline (1.6.18)
|
53
55
|
houston (0.1.1)
|
54
56
|
commander (~> 4.1.2)
|
55
57
|
json (~> 1.7.3)
|
@@ -98,40 +100,39 @@ GEM
|
|
98
100
|
rspec-core (2.13.1)
|
99
101
|
rspec-expectations (2.13.0)
|
100
102
|
diff-lcs (>= 1.1.3, < 2.0)
|
101
|
-
rspec-mocks (2.13.
|
102
|
-
sass (3.2.
|
103
|
-
sequel (3.
|
104
|
-
sinatra (1.
|
105
|
-
rack (~> 1.
|
106
|
-
rack-protection (~> 1.
|
107
|
-
tilt (~> 1.3, >= 1.3.
|
103
|
+
rspec-mocks (2.13.1)
|
104
|
+
sass (3.2.8)
|
105
|
+
sequel (3.46.0)
|
106
|
+
sinatra (1.4.2)
|
107
|
+
rack (~> 1.5, >= 1.5.2)
|
108
|
+
rack-protection (~> 1.4)
|
109
|
+
tilt (~> 1.3, >= 1.3.4)
|
108
110
|
sinatra-assetpack (0.1.7)
|
109
111
|
jsmin
|
110
112
|
rack-test
|
111
113
|
sinatra
|
112
114
|
tilt (>= 1.3.0)
|
113
|
-
sinatra-backbone (0.1.
|
115
|
+
sinatra-backbone (0.1.1)
|
114
116
|
sinatra
|
115
|
-
sinatra-contrib (1.
|
117
|
+
sinatra-contrib (1.4.0)
|
116
118
|
backports (>= 2.0)
|
117
119
|
eventmachine
|
118
120
|
rack-protection
|
119
121
|
rack-test
|
120
|
-
sinatra (~> 1.
|
122
|
+
sinatra (~> 1.4.2)
|
121
123
|
tilt (~> 1.3)
|
122
|
-
sinatra-param (0.1.
|
124
|
+
sinatra-param (0.1.3)
|
123
125
|
sinatra (~> 1.3)
|
124
126
|
sinatra-support (1.2.2)
|
125
127
|
sinatra (>= 1.0)
|
126
128
|
terminal-table (1.4.5)
|
127
129
|
thor (0.18.1)
|
128
|
-
tilt (1.3.
|
129
|
-
venice (0.0
|
130
|
-
commander (~> 4.1
|
131
|
-
|
132
|
-
|
133
|
-
|
134
|
-
zurb-foundation (4.0.9)
|
130
|
+
tilt (1.3.7)
|
131
|
+
venice (0.1.0)
|
132
|
+
commander (~> 4.1)
|
133
|
+
json
|
134
|
+
terminal-table (~> 1.4)
|
135
|
+
zurb-foundation (4.1.2)
|
135
136
|
sass (>= 3.2.0)
|
136
137
|
|
137
138
|
PLATFORMS
|
data/README.md
CHANGED
@@ -17,21 +17,37 @@ Helios also comes with a Web UI. Browse and search through all of your database
|
|
17
17
|
- Ruby 1.9
|
18
18
|
- PostgreSQL 9.1 _([Postgres.app](http://postgresapp.com) is the easiest way to get a Postgres server running on your Mac)_
|
19
19
|
|
20
|
-
## Getting Started
|
20
|
+
## Getting Started on OS X
|
21
21
|
|
22
|
-
1.
|
22
|
+
1. Verify Ruby Installation:
|
23
23
|
|
24
|
-
|
24
|
+
`$ ruby -v`
|
25
25
|
|
26
|
-
|
26
|
+
> If you do not see `ruby 1.9.x` printed, we suggest installing [RVM](http://rvm.io) to manage Ruby versions.
|
27
27
|
|
28
|
-
|
28
|
+
2. Install Helios at the command prompt:
|
29
29
|
|
30
|
-
|
30
|
+
`$ gem install helios`
|
31
31
|
|
32
|
-
|
32
|
+
3. Create a new Helios application:
|
33
33
|
|
34
|
-
|
34
|
+
`$ helios new myapp`
|
35
|
+
|
36
|
+
3. Create a Postgres database at the command prompt:
|
37
|
+
|
38
|
+
`$ createdb -h localhost myapp`
|
39
|
+
|
40
|
+
> Database credentials are read from the `.env` file generated by Helios, as the variable `DATABASE_URL`. By default, this will point to a database with the name of the generated app.
|
41
|
+
|
42
|
+
4. Change directory to `myapp`
|
43
|
+
|
44
|
+
`$ cd myapp`
|
45
|
+
|
46
|
+
5. Start the web server:
|
47
|
+
|
48
|
+
`$ helios server`
|
49
|
+
|
50
|
+
6. Go to [http://localhost:5000/admin](http://localhost:5000/admin) and you’ll see your app's Web UI
|
35
51
|
|
36
52
|
Read on for instructions on the following:
|
37
53
|
|
@@ -59,11 +75,11 @@ require 'bundler'
|
|
59
75
|
Bundler.require
|
60
76
|
|
61
77
|
run Helios::Application.new do
|
62
|
-
|
63
|
-
|
64
|
-
|
65
|
-
|
66
|
-
|
78
|
+
service :data, model: 'path/to/DataModel.xcdatamodel'
|
79
|
+
service :push_notification
|
80
|
+
service :in_app_purchase
|
81
|
+
service :passbook
|
82
|
+
end
|
67
83
|
```
|
68
84
|
|
69
85
|
### Rails
|
@@ -126,7 +142,7 @@ Each entity in the specified data model will have a `Sequel::Model` subclass cre
|
|
126
142
|
</tr>
|
127
143
|
<tr>
|
128
144
|
<td><tt>DELETE /:resources/:id</tt></td>
|
129
|
-
<td>
|
145
|
+
<td>Delete the specified resource instance</td>
|
130
146
|
</tr>
|
131
147
|
</table>
|
132
148
|
|
@@ -269,7 +285,7 @@ Once you've installed the [Heroku Toolbelt](https://toolbelt.heroku.com), and ha
|
|
269
285
|
$ heroku create
|
270
286
|
$ git push heroku master
|
271
287
|
|
272
|
-
## Integrating with iOS Application
|
288
|
+
## Integrating with an iOS Application
|
273
289
|
|
274
290
|
### Core Data Synchronization
|
275
291
|
|
@@ -279,6 +295,8 @@ See ["Building an iOS App with AFIncrementalStore and the Core Data Buildpack"](
|
|
279
295
|
|
280
296
|
### Push Notification Registration
|
281
297
|
|
298
|
+
With [Orbiter](https://github.com/mattt/Orbiter) you can integrate Push Notifications into your app easily.
|
299
|
+
|
282
300
|
```objective-c
|
283
301
|
- (void)application:(UIApplication *)application
|
284
302
|
didRegisterForRemoteNotificationsWithDeviceToken:(NSData *)deviceToken
|
@@ -293,6 +311,18 @@ didRegisterForRemoteNotificationsWithDeviceToken:(NSData *)deviceToken
|
|
293
311
|
}
|
294
312
|
```
|
295
313
|
|
314
|
+
## Coming Attractions
|
315
|
+
|
316
|
+
There's still a lot to do to make Helios even better. Here are some ideas that are at the top of the list:
|
317
|
+
|
318
|
+
- Test coverage
|
319
|
+
- More documentation
|
320
|
+
- More example projects
|
321
|
+
- Better RubyMotion integration
|
322
|
+
- Support for multiple schema definitions (not just Core Data)
|
323
|
+
- Send push notifications from the UI
|
324
|
+
- Support for additional platforms (Android, WP7)
|
325
|
+
|
296
326
|
---
|
297
327
|
|
298
328
|
## Contact
|
data/Rakefile
CHANGED
data/helios.gemspec
CHANGED
@@ -14,7 +14,7 @@ Gem::Specification.new do |s|
|
|
14
14
|
s.description = "Helios is an open-source framework that provides essential backend services for iOS apps, from data synchronization and user accounts to push notifications, in-app purchases, and passbook integration. It allows developers to get a client-server app up-and-running in just a few minutes, and seamlessly incorporate functionality as necessary."
|
15
15
|
|
16
16
|
s.add_dependency "commander", "~> 4.1"
|
17
|
-
s.add_dependency "foreman", "~> 0.
|
17
|
+
s.add_dependency "foreman", "~> 0.63"
|
18
18
|
s.add_dependency "rack-contrib", "~> 1.1"
|
19
19
|
s.add_dependency "rack-core-data", "~> 0.3"
|
20
20
|
s.add_dependency "rack-push-notification", "~> 0.4"
|
@@ -24,13 +24,13 @@ Gem::Specification.new do |s|
|
|
24
24
|
s.add_dependency "coffee-script", "~> 2.2"
|
25
25
|
s.add_dependency "sinatra", "~> 1.3"
|
26
26
|
s.add_dependency "sinatra-contrib", "~> 1.3"
|
27
|
-
s.add_dependency "sinatra-assetpack", "~> 0.1"
|
27
|
+
s.add_dependency "sinatra-assetpack", "~> 0.1.7"
|
28
28
|
s.add_dependency "sinatra-backbone", "~> 0.1.0.rc2"
|
29
29
|
s.add_dependency "sinatra-param", "~> 0.1"
|
30
30
|
s.add_dependency "sinatra-support", "~> 1.2"
|
31
|
-
s.add_dependency "haml", "
|
31
|
+
s.add_dependency "haml", ">= 3.1"
|
32
32
|
s.add_dependency "compass", "~> 0.12"
|
33
|
-
s.add_dependency "zurb-foundation", "
|
33
|
+
s.add_dependency "zurb-foundation", "4.1.2"
|
34
34
|
s.add_dependency "rails-database-url", "~> 1.0"
|
35
35
|
|
36
36
|
s.add_development_dependency "rake", ">= 0"
|
data/lib/helios.rb
CHANGED
@@ -1,10 +1,10 @@
|
|
1
1
|
require 'rack'
|
2
2
|
|
3
3
|
module Helios
|
4
|
-
class
|
4
|
+
class Application
|
5
5
|
def initialize(app = nil, options = {}, &block)
|
6
6
|
map = {}
|
7
|
-
map['/'] = Helios::Backend.new(&block)
|
7
|
+
map['/'] = Rack::Cascade.new([app, Helios::Backend.new(&block)].compact)
|
8
8
|
map['/admin'] = Helios::Frontend.new if options.fetch(:frontend, true)
|
9
9
|
|
10
10
|
@app = Rack::URLMap.new(map)
|
data/lib/helios/backend/data.rb
CHANGED
@@ -4,13 +4,11 @@ command :console do |c|
|
|
4
4
|
|
5
5
|
c.action do |args, options|
|
6
6
|
require 'irb'
|
7
|
-
require '
|
7
|
+
require 'dotenv'
|
8
8
|
require 'sequel'
|
9
9
|
|
10
10
|
@env = {}
|
11
|
-
|
12
|
-
@env[name] = value
|
13
|
-
end
|
11
|
+
@env.update Dotenv::Environment.new(".env")
|
14
12
|
|
15
13
|
Sequel.connect(@env['DATABASE_URL'])
|
16
14
|
|
@@ -1,8 +1,14 @@
|
|
1
|
+
require 'dotenv'
|
2
|
+
require 'sequel'
|
3
|
+
|
1
4
|
command :server do |c|
|
2
5
|
c.syntax = 'helios server'
|
3
6
|
c.summary = 'Start running Helios locally'
|
7
|
+
c.option '-w', "--[no-]warn", "Warn about possible database issues"
|
4
8
|
|
5
9
|
c.action do |args, options|
|
10
|
+
validate_database_settings! unless options.warn == false
|
11
|
+
|
6
12
|
begin
|
7
13
|
exec 'foreman start'
|
8
14
|
rescue => exception
|
@@ -14,3 +20,30 @@ end
|
|
14
20
|
alias_command :s, :server
|
15
21
|
alias_command :start, :server
|
16
22
|
alias_command :launch, :server
|
23
|
+
|
24
|
+
private
|
25
|
+
|
26
|
+
def validate_database_settings!
|
27
|
+
Dotenv.load
|
28
|
+
|
29
|
+
say_error "DATABASE_URL environment variable not set in .env or in Rails config/database.yml" and abort if ENV['DATABASE_URL'].nil?
|
30
|
+
|
31
|
+
begin
|
32
|
+
db = Sequel.connect(ENV['DATABASE_URL'])
|
33
|
+
db.test_connection
|
34
|
+
rescue Sequel::DatabaseConnectionError => error
|
35
|
+
say_warning %{Error connecting to database: "#{error.message.strip}"}
|
36
|
+
case error.message
|
37
|
+
when /database "(.+)" does not exist/
|
38
|
+
if agree "Would you like to create this database now? (y/n)"
|
39
|
+
uri = URI(db.uri)
|
40
|
+
host, database = uri.host, uri.path.delete("/")
|
41
|
+
|
42
|
+
log 'createdb', database
|
43
|
+
system "createdb -h #{host} #{database}"
|
44
|
+
end
|
45
|
+
else
|
46
|
+
abort unless agree "Continue starting Helios? (y/n)"
|
47
|
+
end
|
48
|
+
end
|
49
|
+
end
|
data/lib/helios/version.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: helios
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.2.
|
4
|
+
version: 0.2.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Mattt Thompson
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2013-04-
|
11
|
+
date: 2013-04-26 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: commander
|
@@ -30,14 +30,14 @@ dependencies:
|
|
30
30
|
requirements:
|
31
31
|
- - ~>
|
32
32
|
- !ruby/object:Gem::Version
|
33
|
-
version: '0.
|
33
|
+
version: '0.63'
|
34
34
|
type: :runtime
|
35
35
|
prerelease: false
|
36
36
|
version_requirements: !ruby/object:Gem::Requirement
|
37
37
|
requirements:
|
38
38
|
- - ~>
|
39
39
|
- !ruby/object:Gem::Version
|
40
|
-
version: '0.
|
40
|
+
version: '0.63'
|
41
41
|
- !ruby/object:Gem::Dependency
|
42
42
|
name: rack-contrib
|
43
43
|
requirement: !ruby/object:Gem::Requirement
|
@@ -170,14 +170,14 @@ dependencies:
|
|
170
170
|
requirements:
|
171
171
|
- - ~>
|
172
172
|
- !ruby/object:Gem::Version
|
173
|
-
version:
|
173
|
+
version: 0.1.7
|
174
174
|
type: :runtime
|
175
175
|
prerelease: false
|
176
176
|
version_requirements: !ruby/object:Gem::Requirement
|
177
177
|
requirements:
|
178
178
|
- - ~>
|
179
179
|
- !ruby/object:Gem::Version
|
180
|
-
version:
|
180
|
+
version: 0.1.7
|
181
181
|
- !ruby/object:Gem::Dependency
|
182
182
|
name: sinatra-backbone
|
183
183
|
requirement: !ruby/object:Gem::Requirement
|
@@ -224,14 +224,14 @@ dependencies:
|
|
224
224
|
name: haml
|
225
225
|
requirement: !ruby/object:Gem::Requirement
|
226
226
|
requirements:
|
227
|
-
- -
|
227
|
+
- - ! '>='
|
228
228
|
- !ruby/object:Gem::Version
|
229
229
|
version: '3.1'
|
230
230
|
type: :runtime
|
231
231
|
prerelease: false
|
232
232
|
version_requirements: !ruby/object:Gem::Requirement
|
233
233
|
requirements:
|
234
|
-
- -
|
234
|
+
- - ! '>='
|
235
235
|
- !ruby/object:Gem::Version
|
236
236
|
version: '3.1'
|
237
237
|
- !ruby/object:Gem::Dependency
|
@@ -252,16 +252,16 @@ dependencies:
|
|
252
252
|
name: zurb-foundation
|
253
253
|
requirement: !ruby/object:Gem::Requirement
|
254
254
|
requirements:
|
255
|
-
- -
|
255
|
+
- - '='
|
256
256
|
- !ruby/object:Gem::Version
|
257
|
-
version:
|
257
|
+
version: 4.1.2
|
258
258
|
type: :runtime
|
259
259
|
prerelease: false
|
260
260
|
version_requirements: !ruby/object:Gem::Requirement
|
261
261
|
requirements:
|
262
|
-
- -
|
262
|
+
- - '='
|
263
263
|
- !ruby/object:Gem::Version
|
264
|
-
version:
|
264
|
+
version: 4.1.2
|
265
265
|
- !ruby/object:Gem::Dependency
|
266
266
|
name: rails-database-url
|
267
267
|
requirement: !ruby/object:Gem::Requirement
|