whiskey 1.0.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (69) hide show
  1. checksums.yaml +7 -0
  2. data/.gitignore +24 -0
  3. data/.ruby-gemset +1 -0
  4. data/.ruby-version +1 -0
  5. data/.travis.yml +8 -0
  6. data/CHANGELOG.md +9 -0
  7. data/Gemfile +4 -0
  8. data/LICENSE.txt +22 -0
  9. data/README.md +74 -0
  10. data/ROADMAP.md +13 -0
  11. data/Rakefile +24 -0
  12. data/bin/whiskey +17 -0
  13. data/lib/whiskey.rb +16 -0
  14. data/lib/whiskey/command.rb +30 -0
  15. data/lib/whiskey/command/build.rb +89 -0
  16. data/lib/whiskey/command/start_server.rb +15 -0
  17. data/lib/whiskey/command/templates/Gemfile +10 -0
  18. data/lib/whiskey/command/templates/LICENSE.txt +22 -0
  19. data/lib/whiskey/command/templates/Procfile +1 -0
  20. data/lib/whiskey/command/templates/Thorfile +4 -0
  21. data/lib/whiskey/command/templates/db/seed.rb +15 -0
  22. data/lib/whiskey/command/templates/gitignore +17 -0
  23. data/lib/whiskey/command/templates/lib/action.rb +3 -0
  24. data/lib/whiskey/command/templates/lib/controls.rb +7 -0
  25. data/lib/whiskey/command/templates/lib/controls/router_control.rb +19 -0
  26. data/lib/whiskey/command/templates/lib/controls/world_control.rb +6 -0
  27. data/lib/whiskey/command/templates/lib/example.rb +7 -0
  28. data/lib/whiskey/command/templates/lib/models.rb +3 -0
  29. data/lib/whiskey/command/templates/lib/models/account.rb +6 -0
  30. data/lib/whiskey/command/templates/lib/models/actor.rb +6 -0
  31. data/lib/whiskey/command/templates/lib/models/place.rb +6 -0
  32. data/lib/whiskey/command/templates/ruby-gemset +1 -0
  33. data/lib/whiskey/command/templates/ruby-version +1 -0
  34. data/lib/whiskey/command/templates/server.rb +20 -0
  35. data/lib/whiskey/server.rb +81 -0
  36. data/lib/whiskey/server/action.rb +22 -0
  37. data/lib/whiskey/server/configuration.rb +9 -0
  38. data/lib/whiskey/server/connection.rb +51 -0
  39. data/lib/whiskey/server/control.rb +33 -0
  40. data/lib/whiskey/server/cycle.rb +35 -0
  41. data/lib/whiskey/server/deserializer.rb +21 -0
  42. data/lib/whiskey/server/error.rb +79 -0
  43. data/lib/whiskey/server/handler.rb +17 -0
  44. data/lib/whiskey/server/interpretor.rb +32 -0
  45. data/lib/whiskey/server/receiver.rb +19 -0
  46. data/lib/whiskey/server/responder.rb +19 -0
  47. data/lib/whiskey/server/router.rb +45 -0
  48. data/lib/whiskey/server/serializer.rb +22 -0
  49. data/lib/whiskey/version.rb +3 -0
  50. data/spec/lib/command/build_spec.rb +5 -0
  51. data/spec/lib/command/start_server_spec.rb +5 -0
  52. data/spec/lib/command_spec.rb +5 -0
  53. data/spec/lib/server/configuration_spec.rb +5 -0
  54. data/spec/lib/server/connection_spec.rb +43 -0
  55. data/spec/lib/server/cycle_spec.rb +23 -0
  56. data/spec/lib/server/deserializer_spec.rb +11 -0
  57. data/spec/lib/server/error_spec.rb +5 -0
  58. data/spec/lib/server/handler_spec.rb +5 -0
  59. data/spec/lib/server/interpretor_spec.rb +5 -0
  60. data/spec/lib/server/receiver_spec.rb +5 -0
  61. data/spec/lib/server/responder_spec.rb +15 -0
  62. data/spec/lib/server/serializer_spec.rb +11 -0
  63. data/spec/lib/server_spec.rb +31 -0
  64. data/spec/spec_helper.rb +9 -0
  65. data/test/lib/whiskey/server/connection_test.rb +42 -0
  66. data/test/lib/whiskey/server/cycle_test.rb +16 -0
  67. data/test/lib/whiskey/server/handler_test.rb +18 -0
  68. data/whiskey.gemspec +39 -0
  69. metadata +383 -0
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: a2088c079d3067b82297aeed166800c22a74331a
4
+ data.tar.gz: 08a400becd9045f5e182236cf91ca564037fd38b
5
+ SHA512:
6
+ metadata.gz: a9a54201dc14352ede9bd6a2404470eb6480ef8e5e92f077970b3055817391bb8941238b41c89b1c399668711352e57ad81f01fa5bc2a9d68efe0450773da43a
7
+ data.tar.gz: 5b283dedc0322323f9d541170df10f5971e8d51e4e5e4079184d996f8d51b5f5cca1e9425dba7118fef3898c93ad7563ce476de3ad9a9bf09ea38f8cd04e98d0
@@ -0,0 +1,24 @@
1
+ # See http://help.github.com/ignore-files/ for more about ignoring files.
2
+ #
3
+ # If you find yourself ignoring temporary files generated by your text editor
4
+ # or operating system, you probably want to add a global ignore instead:
5
+ # git config --global core.excludesfile ~/.gitignore
6
+
7
+ # Ignore all of the generated gem stuff
8
+ /pkg
9
+ /*.gem
10
+
11
+ # Ignore bundler config
12
+ /.bundle
13
+ /Gemfile.lock
14
+
15
+ # Ignore all bundler caching
16
+ /vendor/cache
17
+ /vendor/ruby
18
+
19
+ # Ignore all tempfiles
20
+ /tmp
21
+
22
+ # Ignores that should be in the global gitignore
23
+ /coverage
24
+ /doc
@@ -0,0 +1 @@
1
+ whiskey
@@ -0,0 +1 @@
1
+ ruby-2.0.0-p247
@@ -0,0 +1,8 @@
1
+ language: ruby
2
+ rvm:
3
+ - 1.9.2
4
+ - 1.9.3
5
+ - 2.0.0
6
+ - rbx-19mode
7
+ - jruby-19mode
8
+
@@ -0,0 +1,9 @@
1
+ CHANGELOG
2
+ ---------
3
+
4
+ These are the latest changes to this library.
5
+
6
+ 1.0.0
7
+ =====
8
+
9
+ - Initial Release
data/Gemfile ADDED
@@ -0,0 +1,4 @@
1
+ source "https://rubygems.org"
2
+
3
+ # Specify your gemwhiskeys dependencies in whiskey.gemspec
4
+ gemspec
@@ -0,0 +1,22 @@
1
+ Copyright (c) 2013 Kurtis Rainbolt-Greene
2
+
3
+ MIT License
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining
6
+ a copy of this software and associated documentation files (the
7
+ "Software"), to deal in the Software without restriction, including
8
+ without limitation the rights to use, copy, modify, merge, publish,
9
+ distribute, sublicense, and/or sell copies of the Software, and to
10
+ permit persons to whom the Software is furnished to do so, subject to
11
+ the following conditions:
12
+
13
+ The above copyright notice and this permission notice shall be
14
+ included in all copies or substantial portions of the Software.
15
+
16
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
17
+ EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
18
+ MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
19
+ NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
20
+ LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
21
+ OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
22
+ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
@@ -0,0 +1,74 @@
1
+ Whiskey
2
+ -------
3
+
4
+ - [![Gem Version](https://badge.fury.io/rb/whiskey.png)](https://rubygems.org/gems/whiskey)
5
+ - [![Code Quality](https://codeclimate.com/github/krainboltgreene/whiskey.png)](https://codeclimate.com/github/krainboltgreene/whiskey)
6
+ - [![Build Status](https://travis-ci.org/krainboltgreene/whiskey.png)](https://travis-ci.org/krainboltgreene/whiskey)
7
+ - [![Dependency Status](https://gemnasium.com/krainboltgreene/whiskey.png)](https://gemnasium.com/krainboltgreene/whiskey)
8
+ - [![Coverage Status](https://coveralls.io/repos/krainboltgreene/whiskey/badge.png?branch=master)](https://coveralls.io/r/krainboltgreene/whiskey)
9
+
10
+ Whiskey is a [MUTE][MUTE] Engine.
11
+
12
+
13
+ Using Whiskey
14
+ =============
15
+
16
+ Once you've installed Whiskey you can start your new server with:
17
+
18
+ ``` bash
19
+ $ whiskey server start
20
+ ```
21
+
22
+ If you want to start whiskey on a specific port you'll need to specify like this:
23
+
24
+ ``` bash
25
+ $ whiskey server start [-p|--port] 4001
26
+ ```
27
+
28
+ The server defaults to running in development mode, but you can can also specify:
29
+
30
+ ``` bash
31
+ $ whiskey server start [-e|--environment] production
32
+ ```
33
+
34
+ If you want Whiskey to run in the background specify with:
35
+
36
+ ``` bash
37
+ $ whiskey server start [-b|--background]
38
+ ```
39
+
40
+ Any changes you make to the code will require reloading the server so to kill
41
+ the running server:
42
+
43
+ ``` bash
44
+ $ whiskey kill all
45
+ ```
46
+
47
+
48
+ Installing Whiskey
49
+ ==================
50
+
51
+ **Requirements**:
52
+
53
+ 1. JVM 1.7+ (See [guide][JVMINSTALL])
54
+ 2. JRuby 1.7+ (See [guide][JRUBYINSTALL])
55
+ 3. Some Database (See [guide][DBINSTALL])
56
+
57
+ Install it using RubyGems:
58
+
59
+ $ gem install whiskey
60
+
61
+ Now you can create your first project with:
62
+
63
+ ``` bash
64
+ $ whiskey build whiskey_project
65
+ ```
66
+
67
+ Contributing
68
+ ============
69
+
70
+ 1. Fork it
71
+ 2. Create your feature branch (`git checkout -b my-new-feature`)
72
+ 3. Commit your changes (`git commit -am 'Add some feature'`)
73
+ 4. Push to the branch (`git push origin my-new-feature`)
74
+ 5. Create new Pull Request
@@ -0,0 +1,13 @@
1
+ 1.0.0
2
+ -----
3
+
4
+ - Client DSL stuff here
5
+ - Controls & actions should be namespaced to the app
6
+ - We should let controls report to us, instead of finding them in object space
7
+ - Tests, yo
8
+ - Documentation, yo
9
+ - Logging system
10
+ - STDOUT logging
11
+ - File logging
12
+ - Testing framework
13
+ -
@@ -0,0 +1,24 @@
1
+ #!/usr/bin/env rake
2
+ require "bundler/gem_tasks"
3
+ require "rspec/core/rake_task"
4
+ require "yard"
5
+ require "pry"
6
+
7
+ begin
8
+ Bundler.setup :default, :development
9
+ Bundler::GemHelper.install_tasks
10
+ rescue Bundler::BundlerError => error
11
+ $stderr.puts error.message
12
+ $stderr.puts "Run `bundle install` to install missing gems"
13
+ exit error.status_code
14
+ end
15
+
16
+ RSpec::Core::RakeTask.new(:spec)
17
+
18
+ desc "Generate all of the docs"
19
+ YARD::Rake::YardocTask.new do |config|
20
+ config.files = Dir["lib/**/*.rb"]
21
+ end
22
+
23
+ desc "Default: run tests and generate docs"
24
+ task :default => [ :spec, :yard ]
@@ -0,0 +1,17 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ require "thor"
4
+ require "whiskey/command"
5
+
6
+ @traces = Hash.new([])
7
+
8
+ # catcher = TracePoint.new(:call) do |point|
9
+ # if point.defined_class.to_s.include?("Whiskey")
10
+ # trace = { path: point.path, line: point.lineno, method: point.method_id, type: point.event, class: point.defined_class }
11
+ # puts "#{trace[:class]}##{trace[:method]} #{trace[:path].gsub(/^.+whiskey/, "whiskey")}:#{trace[:line]}"
12
+ # @traces[point.defined_class] = @traces[point.defined_class] << trace
13
+ # end
14
+ # end
15
+
16
+ # catcher.enable
17
+ Whiskey::Command.start
@@ -0,0 +1,16 @@
1
+ require "active_record"
2
+ require "forwardable"
3
+ require "multi_json"
4
+ require "astruct"
5
+ require "logger"
6
+
7
+ require_relative "whiskey/version"
8
+
9
+ module Whiskey
10
+ def self.logger
11
+ @logger ||= Logger.new(STDOUT).tap do |log|
12
+ log.level = ENV["WHISKEY_ENVIRONMENT"] == "development" ? Logger::DEBUG : Logger::INFO
13
+ log.formatter = nil
14
+ end
15
+ end
16
+ end
@@ -0,0 +1,30 @@
1
+ require "thor"
2
+ require "whiskey"
3
+ require "active_support/core_ext"
4
+ require_relative "command/build"
5
+ require_relative "command/start_server"
6
+
7
+ module Whiskey
8
+ class Command < Thor
9
+ include Thor::Actions
10
+
11
+ attr_accessor :values
12
+
13
+ def self.source_root
14
+ File.join(File.dirname(__FILE__), "command", "templates")
15
+ end
16
+
17
+ desc "build NAME", "Builds a new whiskey project from the scaffold"
18
+ def build(name)
19
+ @values = AltStruct.new
20
+ Build.new(self, name).call
21
+ end
22
+
23
+ desc "server [start|stop]", "Starts the whiskey server up"
24
+ def server(switch)
25
+ case switch
26
+ when "start" then StartServer.new.call
27
+ end
28
+ end
29
+ end
30
+ end
@@ -0,0 +1,89 @@
1
+ module Whiskey
2
+ class Command < Thor
3
+ class Build
4
+ extend Forwardable
5
+
6
+ RUBIES = ["rbx", "jruby", "ruby-2.0.0"]
7
+ RUBIES_ASK = "Which Ruby do you want to use?\n\n\t- ruby-2.0.0\n\t- rubinius\n\t- jruby\n"
8
+
9
+ attr_reader :command, :name
10
+
11
+ def_delegator :@command, :empty_directory
12
+ def_delegator :@command, :directory
13
+ def_delegator :@command, :template
14
+ def_delegator :@command, :inside
15
+ def_delegator :@command, :run
16
+ def_delegator :@command, :ask
17
+ def_delegator :@command, :say
18
+
19
+ def initialize(command, name)
20
+ @command = command
21
+ @name = @command.values.name = name
22
+ end
23
+
24
+ def call
25
+ create_root
26
+ setup_root
27
+ setup_server
28
+ setup_db
29
+ setup_ruby
30
+ run("git init")
31
+ say("You should now run: bundle install")
32
+ end
33
+
34
+ private
35
+
36
+ def create_root
37
+ empty_directory(name)
38
+ command.destination_root = name
39
+ end
40
+
41
+ def setup_ruby
42
+ @command.values.ruby = ask(RUBIES_ASK, limit_to: RUBIES)
43
+ template("ruby-version", ".ruby-version")
44
+ template("ruby-gemset", ".ruby-gemset")
45
+ end
46
+
47
+ def setup_root
48
+ template("Gemfile")
49
+ template("gitignore", ".gitignore")
50
+ template("LICENSE.txt")
51
+ template("Thorfile")
52
+ template("Procfile")
53
+ template("server.rb")
54
+ empty_directories("script", "log", "tmp", "doc")
55
+ end
56
+
57
+ def empty_directories(*directories)
58
+ directories.each { |directory| empty_directory directory }
59
+ end
60
+
61
+ def setup_server
62
+ inside("lib") do
63
+ template("example.rb", "#{name}.rb")
64
+ template("models.rb")
65
+ template("action.rb")
66
+ template("controls.rb")
67
+ setup_models
68
+ setup_controls
69
+ end
70
+ end
71
+
72
+ def setup_models
73
+ directory("models")
74
+ end
75
+
76
+ def setup_controls
77
+ directory("controls")
78
+ end
79
+
80
+ def setup_db
81
+ inside("db") do
82
+ # if persistence == activerecord
83
+ empty_directory("migrations")
84
+ template("seed.rb")
85
+ end
86
+ end
87
+ end
88
+ end
89
+ end
@@ -0,0 +1,15 @@
1
+ module Whiskey
2
+ class Command < Thor
3
+ class StartServer
4
+ def initialize(host = nil, port = nil, environment = "development")
5
+ ENV["WHISKEY_HOST"] = host
6
+ ENV["WHISKEY_PORT"] = port
7
+ ENV["WHISKEY_ENVIRONMENT"] = environment
8
+ end
9
+
10
+ def call
11
+ load File.join(Dir.pwd, "server.rb")
12
+ end
13
+ end
14
+ end
15
+ end
@@ -0,0 +1,10 @@
1
+ #!/usr/bin/env ruby
2
+ source "https://rubygems.org"
3
+
4
+ gem "whiskey", "<%= Whiskey::VERSION %>", github: "krainboltgreene/whiskey"
5
+
6
+ gem "sqlite3", "~> 1.3"
7
+ # gem "pg", "~> 0.14"
8
+ # gem "mysql2", "~> 0.3"
9
+ # gem "redis", "~> 3.0"
10
+ # gem "dalli", "~> 2.6"
@@ -0,0 +1,22 @@
1
+ Copyright (c) 2013 YOUR NAME HERE
2
+
3
+ MIT License
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining
6
+ a copy of this software and associated documentation files (the
7
+ "Software"), to deal in the Software without restriction, including
8
+ without limitation the rights to use, copy, modify, merge, publish,
9
+ distribute, sublicense, and/or sell copies of the Software, and to
10
+ permit persons to whom the Software is furnished to do so, subject to
11
+ the following conditions:
12
+
13
+ The above copyright notice and this permission notice shall be
14
+ included in all copies or substantial portions of the Software.
15
+
16
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
17
+ EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
18
+ MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
19
+ NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
20
+ LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
21
+ OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
22
+ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
@@ -0,0 +1 @@
1
+ mute: bundle exec whiskey server
@@ -0,0 +1,4 @@
1
+ #!/usr/bin/env ruby
2
+ $:.unshift File.expand_path("../server", __FILE__)
3
+
4
+ require "bundler"
@@ -0,0 +1,15 @@
1
+ # This is where you'll place any logic that boots up your instance from scratch
2
+
3
+ introduction = Document.create do |doc|
4
+ doc.title = "Introduction"
5
+ doc.body = """
6
+ Welcome to <%= values.name.camelize %> a new MUTE!
7
+
8
+ To make an account here simply type:
9
+
10
+ account create a_suitable_username a_suitable_password
11
+
12
+ To login to your account type:
13
+
14
+ account access a_suitable_username a_suitable_password
15
+ """
@@ -0,0 +1,17 @@
1
+ # See http://help.github.com/ignore-files/ for more about ignoring files.
2
+ #
3
+ # If you find yourself ignoring temporary files generated by your text editor
4
+ # or operating system, you probably want to add a global ignore instead:
5
+ # git config --global core.excludesfile ~/.gitignore
6
+
7
+ # Ignore all bundler caching
8
+ /vendor/cache
9
+ /vendor/ruby
10
+
11
+ # Ignore all tempfiles
12
+ /tmp
13
+
14
+ # Ignores that should be in the global gitignore
15
+ /coverage/
16
+ /doc/
17
+ /log/