onemorecloud-websolr-rails 1.4.0 → 1.4.1

Sign up to get free protection for your applications and to get access to all the features.
data/CHANGELOG CHANGED
@@ -1,3 +1,6 @@
1
+ 1.4.1
2
+ - Changed start to local:start, stop to local:stop
3
+ - Removed dependency on remote environment
1
4
  1.4.0
2
5
  - Added CHANGELOG
3
6
  - Added local development server
data/VERSION CHANGED
@@ -1 +1 @@
1
- 1.4.0
1
+ 1.4.1
@@ -18,16 +18,18 @@ mkdir_p SOLR_PIDS_PATH
18
18
  mkdir_p SOLR_DATA_PATH
19
19
 
20
20
  class WebsolrController
21
- COMMANDS = %w[add list delete configure start stop]
21
+ COMMANDS = %w[add list delete configure local:start local:stop]
22
22
  SOLR_PORT = 8983
23
23
 
24
24
  def initialize(parser)
25
25
  @options = parser.options
26
26
  @command = @options.delete(:command)
27
27
  @parser = parser
28
- @user = @options[:user] || ENV["WEBSOLR_USER"]
29
- @pass = @options[:pass] || ENV["WEBSOLR_PWD"]
30
- @base = "http://#{URI::escape @user}:#{URI::escape @pass}@websolr.com"
28
+ @user = @options[:user] ||= ENV["WEBSOLR_USER"]
29
+ @pass = @options[:pass] ||= ENV["WEBSOLR_PWD"]
30
+ if @user && @pass
31
+ @base = "http://#{URI::escape @user}:#{URI::escape @pass}@websolr.com"
32
+ end
31
33
  end
32
34
 
33
35
  def die(s)
@@ -36,6 +38,16 @@ class WebsolrController
36
38
  end
37
39
 
38
40
  def required_options(hash)
41
+ hash = hash.dup
42
+ if hash.delete(:auth) && (!@user || !@pass)
43
+ die <<-STR
44
+
45
+ You need to specify your username and password, either on the command
46
+ line with the -u and -p flags, or in the WEBSOLR_USER and WEBSOLR_PWD
47
+ environment variables.
48
+
49
+ STR
50
+ end
39
51
  hash.inject(true) do |memo, (key, flag)|
40
52
  unless @options[key]
41
53
  STDERR.puts "Please use the #{flag} flag to specify the #{key}."
@@ -56,16 +68,37 @@ class WebsolrController
56
68
  die("I can't find config/environment.rb. Are we in a rails app?")
57
69
  end
58
70
 
59
- unless url = ENV["WEBSOLR_URL"]
60
- die("The WEBSOLR_URL environment variable is not set.\nHave you run websolr configure?")
71
+ unless ENV["WEBSOLR_URL"]
72
+ ENV["WEBSOLR_URL"] = "http://localhost:8983/solr"
73
+ puts <<-STR
74
+
75
+ You haven't configured your app. You might want to do that. I
76
+ assume you just want a quick development server, so I'll start
77
+ one up for you at http://localhost:8983/solr.
78
+
79
+ You should let Rails know about it by setting the WEBSOLR_URL, i.e:
80
+
81
+ > ./script/server WEBSOLR_URL=http://localhost:8983/solr
82
+
83
+ If you want to set up a full environment, run websolr configure.
84
+
85
+ STR
86
+ puts "Is this what you want? [yes]"
87
+ if STDIN.gets.strip =~/^(yes)?$/i
88
+ puts "Continuing...."
89
+ else
90
+ die "Aborted."
91
+ end
61
92
  end
62
- uri = URI.parse(url)
93
+
94
+
95
+ uri = URI.parse(ENV["WEBSOLR_URL"])
63
96
  @port = uri.port
64
97
  rescue URI::InvalidURIError => e
65
98
  die(e.message)
66
99
  end
67
100
 
68
- def cmd_start
101
+ def cmd_local_start
69
102
  check_local_solr_conditions
70
103
  begin
71
104
  n = Net::HTTP.new('127.0.0.1', @port)
@@ -86,7 +119,7 @@ class WebsolrController
86
119
  end
87
120
  end
88
121
 
89
- def cmd_stop
122
+ def cmd_local_stop
90
123
  ENV["RAILS_ENV"] = @options[:rails_env] || ENV["RAILS_ENV"] || "development"
91
124
  fork do
92
125
  file_path = "#{SOLR_PIDS_PATH}/#{ENV['RAILS_ENV']}_pid"
@@ -105,13 +138,13 @@ class WebsolrController
105
138
  end
106
139
 
107
140
  def cmd_add
108
- required_options :name => "-n"
141
+ required_options :name => "-n", :auth => true
109
142
  doc = post "/slices.xml", {:slice => {:name => name}}
110
143
  puts "#{x doc, '//name'}\t#{x doc, '//base-url'}"
111
144
  end
112
145
 
113
146
  def cmd_delete
114
- required_options :name => "-n"
147
+ required_options :name => "-n", :auth => true
115
148
  delete "/slices/#{name}/destroy"
116
149
  puts "done"
117
150
  end
@@ -121,6 +154,7 @@ class WebsolrController
121
154
  end
122
155
 
123
156
  def cmd_list
157
+ required_options :auth => true
124
158
  doc = get "/slices.xml"
125
159
  REXML::XPath.each(doc, "//slice") do |node|
126
160
  puts "#{x node, 'name'}\t#{x node, 'base-url'}"
@@ -147,7 +181,7 @@ class WebsolrController
147
181
  end
148
182
 
149
183
  def cmd_configure
150
- required_options :name => "-n"
184
+ required_options :name => "-n", :auth => true
151
185
  doc = get "/slices.xml"
152
186
  found = false
153
187
  REXML::XPath.each(doc, "//slice") do |node|
@@ -163,7 +197,7 @@ case RAILS_ENV
163
197
  when 'production'
164
198
  ENV['WEBSOLR_URL'] ||= '#{x node, 'base-url'}'
165
199
  else
166
- ENV['WEBSOLR_URL'] ||= 'http://localhost:8983'
200
+ ENV['WEBSOLR_URL'] ||= 'http://localhost:8983/solr'
167
201
  end
168
202
  STR
169
203
  f.puts str
@@ -184,21 +218,10 @@ STR
184
218
  end
185
219
 
186
220
  def start
187
- if @user || @pass
188
- if(COMMANDS.include?(@command))
189
- send("cmd_#{@command}")
190
- else
191
- puts @parser
192
- exit(1)
193
- end
221
+ if(COMMANDS.include?(@command))
222
+ send("cmd_#{@command.gsub(/\W+/, '_')}")
194
223
  else
195
- puts <<-STR
196
-
197
- You need to specify your username and password, either on the command
198
- line with the -u and -p flags, or in the WEBSOLR_USER and WEBSOLR_PWD
199
- environment variables.
200
-
201
- STR
224
+ puts @parser
202
225
  exit(1)
203
226
  end
204
227
  end
@@ -7,13 +7,13 @@ class WebsolrOptionParser < OptionParser
7
7
  "Usage: #{$0} COMMAND [INDEX_NAME] [options]
8
8
 
9
9
  COMMANDs:
10
- start - starts the local development server
11
- stop - stops the local development server
10
+ local:start - starts the local development server
11
+ local:stop - stops the local development server
12
12
 
13
- add - creates a new index
14
- list - shows your indexes
15
- delete - deletes an index
16
- configure - adds websolr to your current Rails app
13
+ add - creates a new index
14
+ list - shows your indexes
15
+ delete - deletes an index
16
+ configure - adds websolr to your current Rails app
17
17
 
18
18
  "
19
19
  end
@@ -5,7 +5,7 @@
5
5
 
6
6
  Gem::Specification.new do |s|
7
7
  s.name = %q{websolr-rails}
8
- s.version = "1.4.0"
8
+ s.version = "1.4.1"
9
9
 
10
10
  s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
11
11
  s.authors = ["Kyle Maxwell"]
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: onemorecloud-websolr-rails
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.4.0
4
+ version: 1.4.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Kyle Maxwell