rusic 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.
data/.gitignore ADDED
@@ -0,0 +1,17 @@
1
+ *.gem
2
+ *.rbc
3
+ .bundle
4
+ .config
5
+ .yardoc
6
+ Gemfile.lock
7
+ InstalledFiles
8
+ _yardoc
9
+ coverage
10
+ doc/
11
+ lib/bundler/man
12
+ pkg
13
+ rdoc
14
+ spec/reports
15
+ test/tmp
16
+ test/version_tmp
17
+ tmp
data/.rvmrc ADDED
@@ -0,0 +1 @@
1
+ rvm use 1.9.2@rusic-gem --create
data/Gemfile ADDED
@@ -0,0 +1,4 @@
1
+ source 'http://rubygems.org'
2
+
3
+ # Specify your gem's dependencies in rusic.gemspec
4
+ gemspec
data/README.md ADDED
@@ -0,0 +1,65 @@
1
+ rusic
2
+ =====
3
+
4
+ This gem makes it easy to develop themes for rusic.com. It can generate
5
+ themes, as well as serve them from a local server.
6
+
7
+ ## Install
8
+
9
+ You'll need ruby, if you're on OS X you'll already have it. Then you'll
10
+ need to install the gem.
11
+
12
+ gem install rusic
13
+
14
+ If this gives you a permission error you might need to use `sudo`.
15
+
16
+ ## Usage
17
+
18
+ With the gem installed you can now generate a theme using the rusic
19
+ command line tool.
20
+
21
+ cd ~/Desktop # Or somewhere else maybe
22
+ rusic new example-theme
23
+
24
+ cd example-theme
25
+ rusic start
26
+
27
+ This will start up a server at http://localhost:4567/.
28
+
29
+ ### Management
30
+
31
+ To simulate the different states the bucket can be in you can, for the
32
+ most part, use the web interface. However some things require custom
33
+ settings, for this you can use the `rusic set` command.
34
+
35
+ #### Bucket expires
36
+
37
+ To set an expiry date on the bucket, use the following command:
38
+
39
+ rusic set expires "in 3 hours"
40
+
41
+ #### Bucket name
42
+
43
+ rusic set name "My bucket"
44
+
45
+ ## Features
46
+
47
+ * Super long urls
48
+ * Wide range of markdown examples
49
+ * Ideas, comments and likes in different states
50
+ * Toggle the timer for the bucket
51
+ * Simulate log in and out
52
+ * Flash messages
53
+ * Custom fields
54
+
55
+ ## Publishing themes
56
+
57
+ Once you're happy with your theme, you'll want to publish it to your
58
+ rusic bucket. This can also be done with the `rusic(1)` cli tool.
59
+
60
+ The static assets will be shipped off to s3 for you, and the templates
61
+ will be uploaded using the API.
62
+
63
+ MIT Licenced
64
+
65
+ Copyright (c) 2011, Chris Mytton / Simpleweb
data/Rakefile ADDED
@@ -0,0 +1,6 @@
1
+ #!/usr/bin/env rake
2
+ require 'bundler/gem_tasks'
3
+ require 'rspec/core/rake_task'
4
+
5
+ RSpec::Core::RakeTask.new(:spec)
6
+ task :default => :spec
data/bin/rusic ADDED
@@ -0,0 +1,4 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ require 'rusic'
4
+ Rusic::CLI.start
@@ -0,0 +1,16 @@
1
+ Feature: Rusic
2
+ In order to create themes for rusic.com
3
+ As a designer/developer
4
+ I want to be able to generate themes from the cli
5
+
6
+ Scenario: New project
7
+ When I run `rusic new example`
8
+ Then the following files should exist:
9
+ | example/rusic.yml |
10
+ | example/layouts/subdomain.html.liquid |
11
+ | example/ideas/index.html.liquid |
12
+ | example/ideas/new.html.liquid |
13
+ | example/ideas/show.html.liquid |
14
+ | example/ideas/edit.html.liquid |
15
+ And the file "example/layouts/subdomain.html.liquid" should contain "{{yield}}"
16
+ And the file "example/ideas/index.html.liquid" should contain "rusic.ideas"
@@ -0,0 +1,5 @@
1
+ require 'aruba/cucumber'
2
+
3
+ Before do
4
+ @aruba_timeout_seconds = 10
5
+ end
data/lib/rusic.rb ADDED
@@ -0,0 +1,8 @@
1
+ require "rusic/version"
2
+
3
+ module Rusic
4
+ autoload :Server, 'rusic/server'
5
+ autoload :CLI, 'rusic/cli'
6
+ autoload :Generators, 'rusic/generators'
7
+ autoload :Idea, 'rusic/idea'
8
+ end
data/lib/rusic/cli.rb ADDED
@@ -0,0 +1,19 @@
1
+ require "thor"
2
+ require "thin"
3
+ require "rack/handler/thin"
4
+
5
+ require "rusic"
6
+
7
+ module Rusic
8
+ class CLI < Thor
9
+ desc "new NAME", "Create a new rusic theme"
10
+ def new(name)
11
+ Rusic::Generators::New.start([name])
12
+ end
13
+
14
+ desc "server", "Start up a template server"
15
+ def server
16
+ Rack::Handler::Thin.run(Rusic::Server)
17
+ end
18
+ end
19
+ end
@@ -0,0 +1,51 @@
1
+ require 'thor/group'
2
+
3
+ module Rusic
4
+ module Generators
5
+ class New < Thor::Group
6
+ include Thor::Actions
7
+
8
+ argument :name, :type => :string
9
+
10
+ def self.source_root
11
+ File.dirname(__FILE__)
12
+ end
13
+
14
+ def create_project
15
+ empty_directory(name)
16
+ end
17
+
18
+ def copy_rusic_yml
19
+ template('templates/rusic.yml', "#{name}/rusic.yml")
20
+ end
21
+
22
+ def create_layout_directory
23
+ empty_directory("#{name}/layouts")
24
+ end
25
+
26
+ def copy_layout
27
+ template('templates/layouts/subdomain.html.liquid', "#{name}/layouts/subdomain.html.liquid")
28
+ end
29
+
30
+ def create_ideas_directory
31
+ empty_directory("#{name}/ideas")
32
+ end
33
+
34
+ def copy_ideas_index
35
+ template('templates/ideas/index.html.liquid', "#{name}/ideas/index.html.liquid")
36
+ end
37
+
38
+ def copy_ideas_new
39
+ template('templates/ideas/new.html.liquid', "#{name}/ideas/new.html.liquid")
40
+ end
41
+
42
+ def copy_ideas_show
43
+ template('templates/ideas/show.html.liquid', "#{name}/ideas/show.html.liquid")
44
+ end
45
+
46
+ def copy_ideas_edit
47
+ template('templates/ideas/edit.html.liquid', "#{name}/ideas/edit.html.liquid")
48
+ end
49
+ end
50
+ end
51
+ end
data/lib/rusic/idea.rb ADDED
@@ -0,0 +1,8 @@
1
+ module Rusic
2
+ class Idea < Hash
3
+ def initialize(attrs = {})
4
+ self.merge!(attrs)
5
+ self['permalink'] = "/ideas/#{self['id']}"
6
+ end
7
+ end
8
+ end
@@ -0,0 +1,33 @@
1
+ require 'sinatra/base'
2
+ require 'liquid'
3
+ require 'yaml'
4
+
5
+ module Rusic
6
+ class Server < Sinatra::Base
7
+
8
+ set :views, Dir.pwd
9
+
10
+ set :public, Dir.pwd + '/public'
11
+
12
+ enable :logging
13
+
14
+ helpers do
15
+ def bucket
16
+ bucket = YAML.load_file('rusic.yml')['bucket']
17
+ bucket['ideas'].map! { |i| Idea.new(i) }
18
+ bucket
19
+ end
20
+ end
21
+
22
+ get '/' do
23
+ liquid :"ideas/index.html", :layout => :"layouts/subdomain.html", :locals => { :rusic => bucket }
24
+ end
25
+
26
+ get '/ideas/:id' do
27
+ liquid :"ideas/show.html", :layout => :"layouts/subdomain.html", :locals => {
28
+ :rusic => bucket,
29
+ :idea => bucket['ideas'].select { |i| i['id'] == params[:id] }
30
+ }
31
+ end
32
+ end
33
+ end
File without changes
@@ -0,0 +1,17 @@
1
+ <ol id="ideas">
2
+ {% for idea in rusic.ideas %}
3
+ <li class="idea" id="idea-{{idea.id}}">
4
+
5
+ <h2>{{idea.title}}</h2>
6
+
7
+ <div class="meta">
8
+ <span class="date created">{{idea.created_at}}</span>
9
+ </div>
10
+
11
+ <div class="content markdown">
12
+ {{markdown idea.content}}
13
+ </div>
14
+
15
+ </li>
16
+ {% endfor %}
17
+ </ol>
File without changes
File without changes
@@ -0,0 +1,51 @@
1
+ <!doctype html>
2
+ <!--[if lt IE 7 ]> <html class="no-js ie6" lang="en"> <![endif]-->
3
+ <!--[if IE 7 ]> <html class="no-js ie7" lang="en"> <![endif]-->
4
+ <!--[if IE 8 ]> <html class="no-js ie8" lang="en"> <![endif]-->
5
+ <!--[if (gte IE 9)|!(IE)]><!--> <html class="no-js" lang="en"> <!--<![endif]-->
6
+ <head>
7
+ <meta charset="utf-8">
8
+ <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
9
+
10
+ <title></title>
11
+ <meta name="description" content="">
12
+ <meta name="author" content="">
13
+
14
+ <meta name="viewport" content="width=device-width, initial-scale=1.0">
15
+
16
+ {{ # This will include all stylesheets in `assets/stylesheets` }}
17
+ {{include_stylesheets}}
18
+
19
+ <script src="http://cdnjs.cloudflare.com/ajax/libs/modernizr/2.0.6/modernizr.min.js"></script>
20
+ <script src="//ajax.googleapis.com/ajax/libs/jquery/1.6.1/jquery.js"></script>
21
+ {{ # This will include all javascripts in `assets/javascripts` }}
22
+ {{include_javascripts}}
23
+
24
+ </head>
25
+
26
+ <body>
27
+
28
+ <div id="container">
29
+ <header>
30
+
31
+ </header>
32
+ <div id="main" role="main">
33
+
34
+ {{ # This will be replace with the template content }}
35
+ {{yield}}
36
+
37
+ </div>
38
+ <footer>
39
+
40
+ </footer>
41
+ </div> <!-- eo #container -->
42
+
43
+ <script>
44
+ var _gaq=[["_setAccount","UA-XXXXX-X"],["_trackPageview"]]; // Change UA-XXXXX-X to be your site's ID
45
+ (function(d,t){var g=d.createElement(t),s=d.getElementsByTagName(t)[0];g.async=1;
46
+ g.src=("https:"==location.protocol?"//ssl":"//www")+".google-analytics.com/ga.js";
47
+ s.parentNode.insertBefore(g,s)}(document,"script"));
48
+ </script>
49
+
50
+ </body>
51
+ </html>
@@ -0,0 +1,6 @@
1
+ bucket:
2
+ title: Testing
3
+ ideas:
4
+ - id: 1
5
+ title: One
6
+ content: Idea One
@@ -0,0 +1,3 @@
1
+ module Rusic
2
+ VERSION = "0.0.1"
3
+ end
data/rusic.gemspec ADDED
@@ -0,0 +1,28 @@
1
+ # -*- encoding: utf-8 -*-
2
+ require File.expand_path('../lib/rusic/version', __FILE__)
3
+
4
+ Gem::Specification.new do |gem|
5
+ gem.authors = ["Chris Mytton"]
6
+ gem.email = ["self@hecticjeff.net"]
7
+ gem.description = %q{Theming tool for rusic.com}
8
+ gem.summary = %q{Generate and manage themes for rusic.com, provides a local environment for rapid development}
9
+ gem.homepage = 'http://hq.rusic.com/theming'
10
+
11
+ gem.add_dependency 'thor', '~> 0.14.6'
12
+ gem.add_dependency 'sinatra', '~> 1.1.4'
13
+ gem.add_dependency 'thin', '~> 1.2.11'
14
+ gem.add_dependency 'liquid', '~> 2.2.2'
15
+
16
+ gem.add_development_dependency 'rake', '~> 0.9.0'
17
+ gem.add_development_dependency 'rspec', '~> 2.6.0'
18
+ gem.add_development_dependency 'rack-test', '~> 0.6'
19
+ gem.add_development_dependency 'cucumber', '~> 1.0'
20
+ gem.add_development_dependency 'aruba', '~> 0.4.3'
21
+
22
+ gem.executables = `git ls-files -- bin/*`.split("\n").map{ |f| File.basename(f) }
23
+ gem.files = `git ls-files`.split("\n")
24
+ gem.test_files = `git ls-files -- {test,spec,features}/*`.split("\n")
25
+ gem.name = "rusic"
26
+ gem.require_paths = ['lib']
27
+ gem.version = Rusic::VERSION
28
+ end
@@ -0,0 +1,21 @@
1
+ require 'rusic'
2
+ require 'rack/test'
3
+
4
+ describe Rusic::VERSION do
5
+ it { should match(/\d\.\d\.\d/) }
6
+ end
7
+
8
+ describe Rusic::Server do
9
+ include Rack::Test::Methods
10
+
11
+ def app
12
+ Rusic::Server
13
+ end
14
+
15
+ describe "GET /" do
16
+ # it "should be successful" do
17
+ # get '/'
18
+ # last_response.status.should be(200)
19
+ # end
20
+ end
21
+ end
metadata ADDED
@@ -0,0 +1,182 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: rusic
3
+ version: !ruby/object:Gem::Version
4
+ prerelease:
5
+ version: 0.0.1
6
+ platform: ruby
7
+ authors:
8
+ - Chris Mytton
9
+ autorequire:
10
+ bindir: bin
11
+ cert_chain: []
12
+
13
+ date: 2011-08-09 00:00:00 Z
14
+ dependencies:
15
+ - !ruby/object:Gem::Dependency
16
+ name: thor
17
+ requirement: &id001 !ruby/object:Gem::Requirement
18
+ none: false
19
+ requirements:
20
+ - - ~>
21
+ - !ruby/object:Gem::Version
22
+ version: 0.14.6
23
+ type: :runtime
24
+ prerelease: false
25
+ version_requirements: *id001
26
+ - !ruby/object:Gem::Dependency
27
+ name: sinatra
28
+ requirement: &id002 !ruby/object:Gem::Requirement
29
+ none: false
30
+ requirements:
31
+ - - ~>
32
+ - !ruby/object:Gem::Version
33
+ version: 1.1.4
34
+ type: :runtime
35
+ prerelease: false
36
+ version_requirements: *id002
37
+ - !ruby/object:Gem::Dependency
38
+ name: thin
39
+ requirement: &id003 !ruby/object:Gem::Requirement
40
+ none: false
41
+ requirements:
42
+ - - ~>
43
+ - !ruby/object:Gem::Version
44
+ version: 1.2.11
45
+ type: :runtime
46
+ prerelease: false
47
+ version_requirements: *id003
48
+ - !ruby/object:Gem::Dependency
49
+ name: liquid
50
+ requirement: &id004 !ruby/object:Gem::Requirement
51
+ none: false
52
+ requirements:
53
+ - - ~>
54
+ - !ruby/object:Gem::Version
55
+ version: 2.2.2
56
+ type: :runtime
57
+ prerelease: false
58
+ version_requirements: *id004
59
+ - !ruby/object:Gem::Dependency
60
+ name: rake
61
+ requirement: &id005 !ruby/object:Gem::Requirement
62
+ none: false
63
+ requirements:
64
+ - - ~>
65
+ - !ruby/object:Gem::Version
66
+ version: 0.9.0
67
+ type: :development
68
+ prerelease: false
69
+ version_requirements: *id005
70
+ - !ruby/object:Gem::Dependency
71
+ name: rspec
72
+ requirement: &id006 !ruby/object:Gem::Requirement
73
+ none: false
74
+ requirements:
75
+ - - ~>
76
+ - !ruby/object:Gem::Version
77
+ version: 2.6.0
78
+ type: :development
79
+ prerelease: false
80
+ version_requirements: *id006
81
+ - !ruby/object:Gem::Dependency
82
+ name: rack-test
83
+ requirement: &id007 !ruby/object:Gem::Requirement
84
+ none: false
85
+ requirements:
86
+ - - ~>
87
+ - !ruby/object:Gem::Version
88
+ version: "0.6"
89
+ type: :development
90
+ prerelease: false
91
+ version_requirements: *id007
92
+ - !ruby/object:Gem::Dependency
93
+ name: cucumber
94
+ requirement: &id008 !ruby/object:Gem::Requirement
95
+ none: false
96
+ requirements:
97
+ - - ~>
98
+ - !ruby/object:Gem::Version
99
+ version: "1.0"
100
+ type: :development
101
+ prerelease: false
102
+ version_requirements: *id008
103
+ - !ruby/object:Gem::Dependency
104
+ name: aruba
105
+ requirement: &id009 !ruby/object:Gem::Requirement
106
+ none: false
107
+ requirements:
108
+ - - ~>
109
+ - !ruby/object:Gem::Version
110
+ version: 0.4.3
111
+ type: :development
112
+ prerelease: false
113
+ version_requirements: *id009
114
+ description: Theming tool for rusic.com
115
+ email:
116
+ - self@hecticjeff.net
117
+ executables:
118
+ - rusic
119
+ extensions: []
120
+
121
+ extra_rdoc_files: []
122
+
123
+ files:
124
+ - .gitignore
125
+ - .rvmrc
126
+ - Gemfile
127
+ - README.md
128
+ - Rakefile
129
+ - bin/rusic
130
+ - features/rusic.feature
131
+ - features/support/env.rb
132
+ - lib/rusic.rb
133
+ - lib/rusic/cli.rb
134
+ - lib/rusic/generators.rb
135
+ - lib/rusic/idea.rb
136
+ - lib/rusic/server.rb
137
+ - lib/rusic/templates/ideas/edit.html.liquid
138
+ - lib/rusic/templates/ideas/index.html.liquid
139
+ - lib/rusic/templates/ideas/new.html.liquid
140
+ - lib/rusic/templates/ideas/show.html.liquid
141
+ - lib/rusic/templates/layouts/subdomain.html.liquid
142
+ - lib/rusic/templates/rusic.yml
143
+ - lib/rusic/version.rb
144
+ - rusic.gemspec
145
+ - spec/rusic_spec.rb
146
+ homepage: http://hq.rusic.com/theming
147
+ licenses: []
148
+
149
+ post_install_message:
150
+ rdoc_options: []
151
+
152
+ require_paths:
153
+ - lib
154
+ required_ruby_version: !ruby/object:Gem::Requirement
155
+ none: false
156
+ requirements:
157
+ - - ">="
158
+ - !ruby/object:Gem::Version
159
+ hash: 1851497966701980921
160
+ segments:
161
+ - 0
162
+ version: "0"
163
+ required_rubygems_version: !ruby/object:Gem::Requirement
164
+ none: false
165
+ requirements:
166
+ - - ">="
167
+ - !ruby/object:Gem::Version
168
+ hash: 1851497966701980921
169
+ segments:
170
+ - 0
171
+ version: "0"
172
+ requirements: []
173
+
174
+ rubyforge_project:
175
+ rubygems_version: 1.8.5
176
+ signing_key:
177
+ specification_version: 3
178
+ summary: Generate and manage themes for rusic.com, provides a local environment for rapid development
179
+ test_files:
180
+ - features/rusic.feature
181
+ - features/support/env.rb
182
+ - spec/rusic_spec.rb