Class: Desert::Plugin

Inherits:
Object show all
Defined in:
lib/desert/plugin.rb

Overview

nodoc

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(path) ⇒ Plugin

Returns a new instance of Plugin.



4
5
6
7
# File 'lib/desert/plugin.rb', line 4

def initialize(path)
  @path = File.expand_path(path)
  @name = File.basename(@path)
end

Instance Attribute Details

#nameObject (readonly)

Returns the value of attribute name.



3
4
5
# File 'lib/desert/plugin.rb', line 3

def name
  @name
end

#pathObject (readonly)

Returns the value of attribute path.



3
4
5
# File 'lib/desert/plugin.rb', line 3

def path
  @path
end

Instance Method Details

#==(other) ⇒ Object



56
57
58
# File 'lib/desert/plugin.rb', line 56

def ==(other)
  self.path == other.path
end

#controllers_pathObject



18
19
20
# File 'lib/desert/plugin.rb', line 18

def controllers_path
  "#{@path}/app/controllers"
end

#find_template(template) ⇒ Object

Finds a template with the specified path



38
39
40
41
# File 'lib/desert/plugin.rb', line 38

def find_template(template)
  template_path = "#{templates_path}/#{template}"
  File.exists?(template_path) ? template_path : nil
end

#framework_pathsObject



43
44
45
46
47
48
49
50
51
52
53
54
# File 'lib/desert/plugin.rb', line 43

def framework_paths
  # TODO: Don't include dirs for frameworks that are not used
  %w(
    railties
    railties/lib
    actionpack/lib
    activesupport/lib
    activerecord/lib
    actionmailer/lib
    actionwebservice/lib
  ).map { |dir| "#{framework_root_path}/#{dir}" }.select { |dir| File.directory?(dir) }
end

#helpers_pathObject

TODO: Test me



28
29
30
# File 'lib/desert/plugin.rb', line 28

def helpers_path
  "#{@path}/app/helpers"
end

#layouts_pathObject

The path to the layout for this plugin



33
34
35
# File 'lib/desert/plugin.rb', line 33

def layouts_path
  "#{templates_path}/layouts"
end

#migrationObject



60
61
62
# File 'lib/desert/plugin.rb', line 60

def migration
  @migration ||= PluginMigrations::Migrator.new(:up, migration_path)
end

#migration_pathObject



9
10
11
# File 'lib/desert/plugin.rb', line 9

def migration_path
  "#{@path}/db/migrate"
end

#models_pathObject

TODO: Test me



23
24
25
# File 'lib/desert/plugin.rb', line 23

def models_path
  "#{@path}/app/models"
end

#templates_pathObject

The path to the views for this plugin



14
15
16
# File 'lib/desert/plugin.rb', line 14

def templates_path
  "#{@path}/app/views"
end

#with_current_pluginObject



64
65
66
67
68
69
70
71
72
# File 'lib/desert/plugin.rb', line 64

def with_current_plugin
  old_plugin = PluginMigrations::Migrator.current_plugin
  begin
    PluginMigrations::Migrator.current_plugin = self
    yield
  ensure
    PluginMigrations::Migrator.current_plugin = old_plugin
  end
end