raystool 1.0.2

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.
Files changed (45) hide show
  1. data/bin/__rays_exec.rb +31 -0
  2. data/bin/__rays_init +79 -0
  3. data/lib/rays/config/backup.rb +42 -0
  4. data/lib/rays/config/configuration.rb +376 -0
  5. data/lib/rays/config/environment.rb +73 -0
  6. data/lib/rays/config/templates/global/global.yml +3 -0
  7. data/lib/rays/config/templates/global/scripts/rays +187 -0
  8. data/lib/rays/config/templates/project/.rays +0 -0
  9. data/lib/rays/config/templates/project/config/environment.yml +68 -0
  10. data/lib/rays/config/templates/project/config/project.yml +4 -0
  11. data/lib/rays/core.rb +128 -0
  12. data/lib/rays/exceptions/rays_exception.rb +25 -0
  13. data/lib/rays/interface/commander.rb +394 -0
  14. data/lib/rays/interface/controller.rb +365 -0
  15. data/lib/rays/loaders/highline.rb +24 -0
  16. data/lib/rays/loaders/logging.rb +60 -0
  17. data/lib/rays/models/appmodule/base.rb +185 -0
  18. data/lib/rays/models/appmodule/content.rb +35 -0
  19. data/lib/rays/models/appmodule/ext.rb +36 -0
  20. data/lib/rays/models/appmodule/hook.rb +36 -0
  21. data/lib/rays/models/appmodule/layout.rb +36 -0
  22. data/lib/rays/models/appmodule/manager.rb +130 -0
  23. data/lib/rays/models/appmodule/portlet.rb +36 -0
  24. data/lib/rays/models/appmodule/servicebuilder.rb +36 -0
  25. data/lib/rays/models/appmodule/theme.rb +36 -0
  26. data/lib/rays/models/project.rb +116 -0
  27. data/lib/rays/servers/base.rb +70 -0
  28. data/lib/rays/servers/database.rb +73 -0
  29. data/lib/rays/servers/liferay.rb +64 -0
  30. data/lib/rays/servers/solr.rb +111 -0
  31. data/lib/rays/services/application_service.rb +116 -0
  32. data/lib/rays/services/backup_service.rb +94 -0
  33. data/lib/rays/services/database.rb +59 -0
  34. data/lib/rays/services/remote.rb +75 -0
  35. data/lib/rays/services/scm.rb +92 -0
  36. data/lib/rays/services/sync.rb +90 -0
  37. data/lib/rays/utils/common_utils.rb +153 -0
  38. data/lib/rays/utils/file_utils.rb +118 -0
  39. data/lib/rays/utils/network_utils.rb +50 -0
  40. data/lib/rays/workers/base.rb +134 -0
  41. data/lib/rays/workers/builder.rb +63 -0
  42. data/lib/rays/workers/cleaner.rb +42 -0
  43. data/lib/rays/workers/deployer.rb +92 -0
  44. data/lib/rays/workers/generator.rb +49 -0
  45. metadata +175 -0
@@ -0,0 +1,36 @@
1
+ =begin
2
+ Copyright (c) 2012 Dmitri Carpov
3
+
4
+ Permission is hereby granted, free of charge, to any person obtaining
5
+ a copy of this software and associated documentation files (the
6
+ "Software"), to deal in the Software without restriction, including
7
+ without limitation the rights to use, copy, modify, merge, publish,
8
+ distribute, sublicense, and/or sell copies of the Software, and to
9
+ permit persons to whom the Software is furnished to do so, subject to
10
+ the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be
13
+ included in all copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
16
+ EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
17
+ MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
18
+ NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
19
+ LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
20
+ OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
21
+ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
22
+ =end
23
+
24
+ module Rays
25
+ module AppModule
26
+ class HookModule < Module
27
+ register :hook
28
+ directory 'hooks'
29
+ archetype 'liferay-hook-archetype'
30
+ generator Worker::Manager.instance.create :generator, :maven
31
+ builder Worker::Manager.instance.create :builder, :maven
32
+ deployer Worker::Manager.instance.create :deployer, :maven
33
+ cleaner Worker::Manager.instance.create :cleaner, :maven
34
+ end
35
+ end
36
+ end
@@ -0,0 +1,36 @@
1
+ =begin
2
+ Copyright (c) 2012 Dmitri Carpov
3
+
4
+ Permission is hereby granted, free of charge, to any person obtaining
5
+ a copy of this software and associated documentation files (the
6
+ "Software"), to deal in the Software without restriction, including
7
+ without limitation the rights to use, copy, modify, merge, publish,
8
+ distribute, sublicense, and/or sell copies of the Software, and to
9
+ permit persons to whom the Software is furnished to do so, subject to
10
+ the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be
13
+ included in all copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
16
+ EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
17
+ MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
18
+ NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
19
+ LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
20
+ OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
21
+ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
22
+ =end
23
+
24
+ module Rays
25
+ module AppModule
26
+ class LayoutModule < Module
27
+ register :layout
28
+ directory 'layouts'
29
+ archetype 'liferay-layouttpl-archetype'
30
+ generator Worker::Manager.instance.create :generator, :maven
31
+ builder Worker::Manager.instance.create :builder, :maven
32
+ deployer Worker::Manager.instance.create :deployer, :maven
33
+ cleaner Worker::Manager.instance.create :cleaner, :maven
34
+ end
35
+ end
36
+ end
@@ -0,0 +1,130 @@
1
+ =begin
2
+ Copyright (c) 2012 Dmitri Carpov
3
+
4
+ Permission is hereby granted, free of charge, to any person obtaining
5
+ a copy of this software and associated documentation files (the
6
+ "Software"), to deal in the Software without restriction, including
7
+ without limitation the rights to use, copy, modify, merge, publish,
8
+ distribute, sublicense, and/or sell copies of the Software, and to
9
+ permit persons to whom the Software is furnished to do so, subject to
10
+ the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be
13
+ included in all copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
16
+ EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
17
+ MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
18
+ NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
19
+ LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
20
+ OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
21
+ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
22
+ =end
23
+
24
+ module Rays
25
+ module AppModule
26
+
27
+ #
28
+ # Facade class for application modules.
29
+ #
30
+ class Manager
31
+ include Singleton
32
+ attr_reader :module_types
33
+
34
+ def initialize
35
+ @module_types = {}
36
+ end
37
+
38
+ #
39
+ # Registering new application module type.
40
+ # Normally used from inside base application module.
41
+ #
42
+ def register_module_type(type, module_class)
43
+ @module_types[type] = module_class
44
+ end
45
+
46
+ #
47
+ # Instantiate module which has a given directory
48
+ #
49
+ def get_from_path(path)
50
+ return nil if path.nil? or !path.start_with?($rays_config.project_root)
51
+
52
+ module_instance = nil
53
+ directory = Utils::FileUtils.find_up '.module', path, $rays_config.project_root
54
+ unless directory.nil?
55
+ module_instance = get_module_from_descriptor(File.join(directory, '.module'))
56
+ end
57
+
58
+ module_instance
59
+ end
60
+
61
+ #
62
+ # Find an application module by the given type and name.
63
+ # Returns application module object or nil if no module is found.
64
+ #
65
+ def get(type, name)
66
+ app_module = nil
67
+ module_class = @module_types[type]
68
+ unless module_class.nil?
69
+ base_path = module_class.base_path
70
+ in_directory(base_path) do
71
+ if File.exists?(File.join(base_path, "#{name}/.module"))
72
+ app_module = module_class.new(name)
73
+ end
74
+ end
75
+ end
76
+ app_module
77
+ end
78
+
79
+ #
80
+ # Instantiate a module from a given descriptor file.
81
+ #
82
+ def get_from_descriptor(descriptor_file)
83
+ return nil unless File.exists?(descriptor_file)
84
+ get_module_from_descriptor(descriptor_file)
85
+ end
86
+
87
+ #
88
+ # Finds all modules in the current project.
89
+ # If type is specified it will find only the modules of a given type.
90
+ #
91
+ def all(type=nil)
92
+ app_modules = []
93
+ module_classes = []
94
+ if type.nil?
95
+ @module_types.each_value do |module_class|
96
+ module_classes << module_class
97
+ end
98
+ else
99
+ module_classes = @module_types[type] unless @module_types[type].nil?
100
+ end
101
+
102
+ module_classes.each do |module_class|
103
+ base_path = module_class.base_path
104
+ Utils::FileUtils.find_down(base_path, '\.module$').each do |descriptor_file|
105
+ app_modules << get_module_from_descriptor(descriptor_file)
106
+ end
107
+ end
108
+
109
+ app_modules
110
+ end
111
+
112
+ #
113
+ # Create a new module or initialize if a directory exists but no .module file.
114
+ #
115
+ def create(type, name, generator=nil)
116
+ module_type_class = @module_types[type]
117
+ raise RaysException.new ("Cannot find module type #{type}") if module_type_class.nil?
118
+ module_instance = module_type_class.new name
119
+ module_instance.create generator
120
+ end
121
+
122
+ private
123
+
124
+ def get_module_from_descriptor(descriptor_file)
125
+ module_config = YAML::load_file(descriptor_file)
126
+ get(module_config['type'], module_config['name'])
127
+ end
128
+ end
129
+ end
130
+ end
@@ -0,0 +1,36 @@
1
+ =begin
2
+ Copyright (c) 2012 Dmitri Carpov
3
+
4
+ Permission is hereby granted, free of charge, to any person obtaining
5
+ a copy of this software and associated documentation files (the
6
+ "Software"), to deal in the Software without restriction, including
7
+ without limitation the rights to use, copy, modify, merge, publish,
8
+ distribute, sublicense, and/or sell copies of the Software, and to
9
+ permit persons to whom the Software is furnished to do so, subject to
10
+ the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be
13
+ included in all copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
16
+ EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
17
+ MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
18
+ NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
19
+ LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
20
+ OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
21
+ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
22
+ =end
23
+
24
+ module Rays
25
+ module AppModule
26
+ class PortletModule < Module
27
+ register :portlet
28
+ directory 'portlets'
29
+ archetype 'liferay-portlet-archetype'
30
+ generator Worker::Manager.instance.create :generator, :maven
31
+ builder Worker::Manager.instance.create :builder, :maven
32
+ deployer Worker::Manager.instance.create :deployer, :maven
33
+ cleaner Worker::Manager.instance.create :cleaner, :maven
34
+ end
35
+ end
36
+ end
@@ -0,0 +1,36 @@
1
+ =begin
2
+ Copyright (c) 2012 Dmitri Carpov
3
+
4
+ Permission is hereby granted, free of charge, to any person obtaining
5
+ a copy of this software and associated documentation files (the
6
+ "Software"), to deal in the Software without restriction, including
7
+ without limitation the rights to use, copy, modify, merge, publish,
8
+ distribute, sublicense, and/or sell copies of the Software, and to
9
+ permit persons to whom the Software is furnished to do so, subject to
10
+ the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be
13
+ included in all copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
16
+ EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
17
+ MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
18
+ NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
19
+ LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
20
+ OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
21
+ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
22
+ =end
23
+
24
+ module Rays
25
+ module AppModule
26
+ class ServiceBuilderModule < Module
27
+ register :servicebuilder
28
+ directory 'services'
29
+ archetype 'liferay-servicebuilder-archetype'
30
+ generator Worker::Manager.instance.create :generator, :maven
31
+ builder Worker::Manager.instance.create :builder, :maven
32
+ deployer Worker::Manager.instance.create :deployer, :maven
33
+ cleaner Worker::Manager.instance.create :cleaner, :maven
34
+ end
35
+ end
36
+ end
@@ -0,0 +1,36 @@
1
+ =begin
2
+ Copyright (c) 2012 Dmitri Carpov
3
+
4
+ Permission is hereby granted, free of charge, to any person obtaining
5
+ a copy of this software and associated documentation files (the
6
+ "Software"), to deal in the Software without restriction, including
7
+ without limitation the rights to use, copy, modify, merge, publish,
8
+ distribute, sublicense, and/or sell copies of the Software, and to
9
+ permit persons to whom the Software is furnished to do so, subject to
10
+ the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be
13
+ included in all copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
16
+ EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
17
+ MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
18
+ NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
19
+ LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
20
+ OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
21
+ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
22
+ =end
23
+
24
+ module Rays
25
+ module AppModule
26
+ class ThemeModule < Module
27
+ register :theme
28
+ directory 'themes'
29
+ archetype 'liferay-theme-archetype'
30
+ generator Worker::Manager.instance.create :generator, :maven
31
+ builder Worker::Manager.instance.create :builder, :maven
32
+ deployer Worker::Manager.instance.create :deployer, :maven
33
+ cleaner Worker::Manager.instance.create :cleaner, :maven
34
+ end
35
+ end
36
+ end
@@ -0,0 +1,116 @@
1
+ =begin
2
+ Copyright (c) 2012 Dmitri Carpov
3
+
4
+ Permission is hereby granted, free of charge, to any person obtaining
5
+ a copy of this software and associated documentation files (the
6
+ "Software"), to deal in the Software without restriction, including
7
+ without limitation the rights to use, copy, modify, merge, publish,
8
+ distribute, sublicense, and/or sell copies of the Software, and to
9
+ permit persons to whom the Software is furnished to do so, subject to
10
+ the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be
13
+ included in all copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
16
+ EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
17
+ MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
18
+ NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
19
+ LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
20
+ OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
21
+ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
22
+ =end
23
+
24
+ module Rays
25
+ class Project
26
+
27
+ attr_reader :name, :package, :liferay
28
+
29
+ def initialize
30
+ project_config_file = "#{$rays_config.project_root}/config/project.yml"
31
+ project_config = YAML::load_file(project_config_file)
32
+ @name = project_config['name']
33
+ @liferay = project_config['liferay']
34
+ @package = project_config['package']
35
+ end
36
+
37
+ class << self
38
+ #
39
+ # Get a project instance
40
+ #
41
+ def instance
42
+ self.new
43
+ end
44
+
45
+ #
46
+ # Create new project with a given name
47
+ #
48
+ def create(name)
49
+ project_root = File.join(Dir.pwd, name)
50
+ raise RaysException.new("Folder name #{name} already exists") if Dir.exist?(project_root)
51
+ unless rays_exec("mkdir #{project_root}")
52
+ raise RaysException.new("Cannot create directory #{name}")
53
+ end
54
+
55
+ copy_template_to project_root
56
+ init_project(project_root)
57
+ end
58
+
59
+ #
60
+ # Parse current directory and try to initialize rays project on it.
61
+ #
62
+ def init
63
+ project_root = Dir.pwd
64
+ is_a_project = true
65
+
66
+ begin
67
+ $rays_config.project_root
68
+ rescue RaysException => e
69
+ is_a_project = false
70
+ end
71
+
72
+ if is_a_project
73
+ raise RaysException.new("this project is already initialized.")
74
+ end
75
+
76
+ project_name = File.basename(Dir.pwd)
77
+ $log.info("init project #{project_name}")
78
+ copy_template_to project_root
79
+
80
+ init_project(project_name)
81
+
82
+ module_types = AppModule::Manager.instance.module_types
83
+ module_types.values.each do |module_class|
84
+ names = Utils::FileUtils.find_directories(module_class.base_path)
85
+ unless names.nil?
86
+ names.each do |name|
87
+ AppModule::Manager.instance.create(module_class.type, name)
88
+ end
89
+ end
90
+ end
91
+
92
+ $log.info("done")
93
+ end
94
+
95
+ private
96
+ def copy_template_to(project_root)
97
+ template_path = "#{File.expand_path(File.dirname(__FILE__))}/../config/templates/project"
98
+ Find.find(template_path) do |file|
99
+ file_base_path = file.sub(template_path, "")
100
+ next if file_base_path.empty?
101
+ $log.info("create <!#{file_base_path}!>")
102
+ FileUtils.cp_r(file, File.join(project_root, file_base_path))
103
+ end
104
+ end
105
+
106
+ def init_project(project_root)
107
+ in_directory(project_root) do
108
+ project_file = Utils::FileUtils::YamlFile.new('./config/project.yml')
109
+ project_file.properties['name'] = File.basename(project_root)
110
+ project_file.write
111
+ Rays::Core.instance.reload
112
+ end
113
+ end
114
+ end
115
+ end
116
+ end
@@ -0,0 +1,70 @@
1
+ =begin
2
+ Copyright (c) 2012 Dmitri Carpov
3
+
4
+ Permission is hereby granted, free of charge, to any person obtaining
5
+ a copy of this software and associated documentation files (the
6
+ "Software"), to deal in the Software without restriction, including
7
+ without limitation the rights to use, copy, modify, merge, publish,
8
+ distribute, sublicense, and/or sell copies of the Software, and to
9
+ permit persons to whom the Software is furnished to do so, subject to
10
+ the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be
13
+ included in all copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
16
+ EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
17
+ MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
18
+ NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
19
+ LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
20
+ OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
21
+ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
22
+ =end
23
+
24
+ module Rays
25
+ module Server
26
+ class BaseServer
27
+ attr_reader :name
28
+
29
+ def initialize(name, host, remote, java_home=nil, java_cmd=nil)
30
+ @name = name
31
+ @host = host
32
+ @remote = remote
33
+ @java_home = java_home
34
+ @java_cmd = java_cmd
35
+ default
36
+ end
37
+
38
+ def host
39
+ raise RaysException.new(missing_environment_option(@name, 'host')) if @host.nil?
40
+ @host
41
+ end
42
+
43
+ def java_home
44
+ raise RaysException.new(missing_environment_option(@name, 'java home')) if @java_home.nil?
45
+ @java_home
46
+ end
47
+
48
+ def java_cmd
49
+ raise RaysException.new(missing_environment_option(@name, 'java command')) if @java_cmd.nil?
50
+ @java_cmd
51
+ end
52
+
53
+ def remote?
54
+ !@remote.nil?
55
+ end
56
+
57
+ def remote
58
+ raise RaysException.new(missing_environment_option(@name, 'remote access')) if @remote.nil?
59
+ @remote
60
+ end
61
+
62
+ private
63
+ def default
64
+ @host ||= 'localhost'
65
+ @java_home ||= '/usr/lib/jvm/java-6-sun'
66
+ @java_cmd ||= '/usr/bin/java'
67
+ end
68
+ end
69
+ end
70
+ end
@@ -0,0 +1,73 @@
1
+ =begin
2
+ Copyright (c) 2012 Dmitri Carpov
3
+
4
+ Permission is hereby granted, free of charge, to any person obtaining
5
+ a copy of this software and associated documentation files (the
6
+ "Software"), to deal in the Software without restriction, including
7
+ without limitation the rights to use, copy, modify, merge, publish,
8
+ distribute, sublicense, and/or sell copies of the Software, and to
9
+ permit persons to whom the Software is furnished to do so, subject to
10
+ the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be
13
+ included in all copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
16
+ EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
17
+ MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
18
+ NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
19
+ LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
20
+ OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
21
+ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
22
+ =end
23
+
24
+ module Rays
25
+ module Server
26
+ class DatabaseServer < BaseServer
27
+
28
+ def initialize(name, host, remote, java_home, java_bin, port, db_name, username, password, type)
29
+ super(name, host, remote, java_home, java_bin)
30
+ @port = port
31
+ @db_name = db_name
32
+ @username = username
33
+ @password = password
34
+ @type = type
35
+
36
+ @instance = nil
37
+ if 'mysql'.eql?(@type)
38
+ @instance = Rays::Database::MySQL.new @host, @port, @username, @password
39
+ end
40
+ end
41
+
42
+ def port
43
+ raise RaysException.new(missing_environment_option('Database server', 'port')) if @port.nil?
44
+ @port
45
+ end
46
+
47
+ def db_name
48
+ raise RaysException.new(missing_environment_option('Database server', 'database name')) if @db_name.nil?
49
+ @db_name
50
+ end
51
+
52
+ def username
53
+ raise RaysException.new(missing_environment_option('Database server', 'username')) if @username.nil?
54
+ @username
55
+ end
56
+
57
+ def password
58
+ raise RaysException.new(missing_environment_option('Database server', 'password')) if @password.nil?
59
+ @password
60
+ end
61
+
62
+ def type
63
+ raise RaysException.new(missing_environment_option('Database server', 'type')) if @type.nil?
64
+ @type
65
+ end
66
+
67
+ def instance
68
+ raise RaysException.new("Unknown database type #{@type}") if @instance.nil?
69
+ @instance
70
+ end
71
+ end
72
+ end
73
+ end
@@ -0,0 +1,64 @@
1
+ =begin
2
+ Copyright (c) 2012 Dmitri Carpov
3
+
4
+ Permission is hereby granted, free of charge, to any person obtaining
5
+ a copy of this software and associated documentation files (the
6
+ "Software"), to deal in the Software without restriction, including
7
+ without limitation the rights to use, copy, modify, merge, publish,
8
+ distribute, sublicense, and/or sell copies of the Software, and to
9
+ permit persons to whom the Software is furnished to do so, subject to
10
+ the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be
13
+ included in all copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
16
+ EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
17
+ MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
18
+ NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
19
+ LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
20
+ OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
21
+ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
22
+ =end
23
+
24
+ module Rays
25
+ module Server
26
+ class LiferayServer < BaseServer
27
+
28
+ def initialize(name, host, remote, java_home, java_bin, port, deploy_directory, data_directory, application_service)
29
+ super(name, host, remote, java_home, java_bin)
30
+ @port = port
31
+ @deploy_directory = deploy_directory
32
+ @data_directory = data_directory
33
+ @service = application_service
34
+ default
35
+ end
36
+
37
+ def port
38
+ raise RaysException.new(missing_environment_option('Liferay', 'port')) if @port.nil?
39
+ @port
40
+ end
41
+
42
+ def deploy_directory
43
+ raise RaysException.new(missing_environment_option('Liferay', 'deploy directory')) if @deploy_directory.nil?
44
+ @deploy_directory
45
+ end
46
+
47
+ def data_directory
48
+ raise RaysException.new(missing_environment_option('Liferay', 'data directory')) if @data_directory.nil?
49
+ @data_directory
50
+ end
51
+
52
+ def service
53
+ raise RaysException.new(missing_environment_option('Liferay', 'service')) if @service.nil?
54
+ @service
55
+ end
56
+
57
+ private
58
+ def default
59
+ @port ||= 8080
60
+ @deploy_directory ||= '/opt/liferay-portal/deploy'
61
+ end
62
+ end
63
+ end
64
+ end