Class: ActiveCouch::Exporter
- Inherits:
-
Object
- Object
- ActiveCouch::Exporter
- Defined in:
- lib/active_couch/support/exporter.rb
Class Method Summary collapse
- .all_databases(site) ⇒ Object
- .create_database(site, name) ⇒ Object
- .delete(site, view, opts = {}) ⇒ Object
- .delete_database(site, name) ⇒ Object
- .exists?(site, name) ⇒ Boolean
- .export(site, view, opts = {}) ⇒ Object
Class Method Details
.all_databases(site) ⇒ Object
8 9 10 11 |
# File 'lib/active_couch/support/exporter.rb', line 8 def all_databases(site) conn = Connection.new(site) JSON.parse(conn.get("/_all_dbs")) end |
.create_database(site, name) ⇒ Object
66 67 68 69 70 71 72 73 74 75 76 77 78 |
# File 'lib/active_couch/support/exporter.rb', line 66 def create_database(site, name) conn = Connection.new(site) response = conn.put("/#{name}", "{}") case response.code when '201' # 201 = success true when '409' # 409 = database already exists raise ActiveCouch::ViewError, 'Database exists' else raise ActiveCouch::ViewError, "Error creating database - got HTTP response #{response.code}" end end |
.delete(site, view, opts = {}) ⇒ Object
36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 |
# File 'lib/active_couch/support/exporter.rb', line 36 def delete(site, view, opts = {}) rev = nil if view.name.nil? || (view.database.nil? && opts[:database].nil?) raise ActiveCouch::ViewError, "Both the name and the database need to be defined in your view" end # If the database is not defined in the view, it can be supported # as an option to the export method database_name = opts[:database] || view.database conn = Connection.new(site) if(view_json = exists?(site, "/#{database_name}/_design/#{view.name}")) rev = JSON.parse(view_json)['_rev'] end # The view function for a view with name 'by_name' and database 'activecouch_test' should be PUT to # http://#{host}:#{port}/activecouch_test/_design/by_name. response = conn.delete("/#{database_name}/_design/#{view.name}?rev=#{rev}") if response.code =~ /20[0,2]/ true # 20[0,2] = success else raise ActiveCouch::ViewError, "Error deleting view - got HTTP response #{response.code}" end end |
.delete_database(site, name) ⇒ Object
80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 |
# File 'lib/active_couch/support/exporter.rb', line 80 def delete_database(site, name) conn = Connection.new(site) response = conn.delete("/#{name}") case response.code when '200' when '201' when '202' true # 201 = success when '404' raise ActiveCouch::ViewError, "Database '#{name}' does not exist" # 404 = database doesn't exist else raise ActiveCouch::ViewError, "Error creating database - got HTTP response #{response.code}" end end |
.exists?(site, name) ⇒ Boolean
58 59 60 61 62 63 64 |
# File 'lib/active_couch/support/exporter.rb', line 58 def exists?(site, name) conn = Connection.new(site) response = conn.get("#{name}") response rescue ActiveCouch::ResourceNotFound false end |
.export(site, view, opts = {}) ⇒ Object
13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 |
# File 'lib/active_couch/support/exporter.rb', line 13 def export(site, view, opts = {}) existing_view = {} if view.name.nil? || (view.database.nil? && opts[:database].nil?) raise ActiveCouch::ViewError, "Both the name and the database need to be defined in your view" end # If the database is not defined in the view, it can be supported # as an option to the export method database_name = opts[:database] || view.database conn = Connection.new(site) # The view function for a view with name 'by_name' and database 'activecouch_test' should be PUT to # http://#{host}:#{port}/activecouch_test/_design/by_name. if(view_json = exists?(site, "/#{database_name}/_design/#{view.name}")) existing_view = JSON.parse(view_json) end response = conn.put("/#{database_name}/_design/#{view.name}", view.to_json(existing_view)) case response.code when '201' true # 201 = success else raise ActiveCouch::ViewError, "Error exporting view - got HTTP response #{response.code}" end end |