nostos-source-illiad 0.0.2 → 0.0.4

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.
data/README.md CHANGED
@@ -12,20 +12,26 @@ Add the following to your Gemfile and run `bundle install`
12
12
 
13
13
  ## Configuration
14
14
 
15
- In `config/application.rb` add the following options:
16
-
17
- config.source_illiad.number_of_days_to_poll = 2
18
- config.source_illiad.db = {
19
- :dataserver => '',
20
- :adapter => 'sqlserver',
21
- :host => '',
22
- :dsn => '',
23
- :username => '',
24
- :password => '',
25
- :database => ''
26
- }
27
-
28
- `dataserver` is the name for your server as defined in freetds.conf. `number_of_days_to_poll` is how many days you want to poll into the past. This number must be greater than how often you run Nostos in order to stay synchronized. I recommend polling 2-3 days in the past at most.
15
+ You can interactively configure the Illiad source driver by running `rails generate source_illiad:install`. This will prompt you for the necessariy values.
16
+
17
+ You can manually configure the Illiad source drive in `config/source_illiad.rb`:
18
+
19
+ number_of_days_to_poll: 14
20
+
21
+ db:
22
+ adapter: 'sqlserver'
23
+ dataserver: ''
24
+ username: ''
25
+ password: ''
26
+
27
+ webcirc:
28
+ url: 'http://HOSTNAME/illiad/WebCirc/Logon.aspx'
29
+ username: ''
30
+ password: ''
31
+
32
+ `dataserver` is the name for your server as defined in freetds.conf. `number_of_days_to_poll` is how many days you want to poll into the past. This number must be greater than how often you run Nostos in order to stay synchronized. I recommend polling 2-3 days in the past at most. Your WebCirc URL may be different, though the above should hold true for most OCLC hosted servers.
33
+
34
+ The `db` variable will actually be passed directly to `ActiveRecord#establish_connection` so you can define any additional parameters as necessary.
29
35
 
30
36
  # Author
31
37
 
@@ -1,16 +1,13 @@
1
1
  # Source::Illiad, Nostos Source Driver for Illiad
2
2
 
3
- require 'nostos-source-illiad/railtie.rb'
3
+ require 'nostos-source-illiad/railtie.rb' if defined?(Rails)
4
4
  require 'nostos-source-illiad/config.rb'
5
5
  require 'nostos-source-illiad/record.rb'
6
6
  require 'illiad'
7
7
  require 'illiad/transaction.rb'
8
+ require 'nostos-source-illiad/generators/source_illiad_generator.rb'
8
9
 
9
10
 
10
- # activerecord-illiad-adapter is named Illiad, so we must rename it to avoid
11
- # naming conflict.
12
- IlliadAR = Illiad
13
-
14
11
  module Source
15
12
  module Illiad
16
13
  def self.config
@@ -22,7 +19,7 @@ module Source
22
19
  end
23
20
 
24
21
  def self.find(id)
25
- IlliadAR::AR::Transaction.find(id).to_record
22
+ ::Illiad::AR::Transaction.find(id).to_record
26
23
  end
27
24
 
28
25
  # Poll Illiad for new transactions to process. The strategy is to find
@@ -50,7 +47,7 @@ module Source
50
47
  Transactions.RequestType = 'Loan'
51
48
  SQL
52
49
 
53
- IlliadAR::AR::Transaction.find_by_sql(sql).map {|t| t.to_record}
50
+ ::Illiad::AR::Transaction.find_by_sql(sql).map {|t| t.to_record}
54
51
  end
55
52
  end
56
53
  end
@@ -0,0 +1,50 @@
1
+ require 'rails/generators'
2
+
3
+ module SourceIlliad
4
+ class InstallGenerator < Rails::Generators::Base
5
+ def configure
6
+ # Ask General Questions
7
+ puts "General Configuration:"
8
+ number_of_days_to_poll = ask('How many days in the past would you like to poll Illiad? [7]')
9
+ number_of_days_to_poll = 7 if number_of_days_to_poll.blank?
10
+
11
+ # Ask DB Questions
12
+ puts "Database Configuration:"
13
+ puts "The following fields are required to establish a connection with your Illiad server."
14
+ db = {}
15
+ db[:dataserver] = ask('dataserver (the name for your server as defined in freetds.conf): ')
16
+ db[:username] = ask('username (the database server user): ')
17
+ db[:password] = ask('password (the user password): ')
18
+
19
+ # Ask WebCirc Questions
20
+ puts "WebCirc Configuration:"
21
+ webcirc = {}
22
+ webcirc[:url] = ask('URL: ')
23
+ webcirc[:username] = ask('Username: ')
24
+ webcirc[:password] = ask('Password: ')
25
+
26
+ # Configure application settings
27
+ create_file File.join(Rails.root, 'config', 'source_illiad.yml'), <<CONFIG
28
+ # Source Illiad Configuration
29
+
30
+ # This is the number of days into the past you would like to poll.
31
+ # This value must be greater than how often you run your daily cron job.
32
+ number_of_days_to_poll: #{number_of_days_to_poll}
33
+
34
+ # Database
35
+ db:
36
+ adapter: 'sqlserver'
37
+ dataserver: '#{db[:dataserver]}'
38
+ username: '#{db[:username]}'
39
+ password: '#{db[:password]}'
40
+
41
+ # Web Circulation
42
+ webcirc:
43
+ url: '#{webcirc[:url]}'
44
+ username: '#{webcirc[:username]}'
45
+ password: '#{webcirc[:password]}'
46
+ CONFIG
47
+
48
+ end
49
+ end
50
+ end
@@ -5,16 +5,21 @@ module Source
5
5
  class Railtie < Rails::Railtie
6
6
  config.source_illiad = ActiveSupport::OrderedOptions.new
7
7
 
8
+
8
9
  initializer "source_illiad.configure" do |app|
9
- Source::Illiad.configure do |config|
10
- config.number_of_days_to_poll = app.config.source_illiad[:number_of_days_to_poll]
11
- config.db = app.config.source_illiad[:db]
12
- config.webcirc = app.config.source_illiad[:webcirc]
13
- end
14
- end
10
+ config_file = File.join(Rails.root, 'config', 'source_illiad.yml')
15
11
 
16
- initializer "source_illiad.establish_connection", :after => "source_illiad.configure" do |app|
17
- IlliadAR::AR::Base.establish_connection(Source::Illiad.config.db)
12
+ # Only run configuration if config/source_illiad.yml exists
13
+ if File.exists?(config_file)
14
+ CONFIG = YAML::load(File.open(config_file))
15
+ Source::Illiad.configure do |config|
16
+ config.number_of_days_to_poll = CONFIG["number_of_days_to_poll"]
17
+ config.db = CONFIG["db"]
18
+ config.webcirc = CONFIG["webcirc"]
19
+ end
20
+
21
+ ::Illiad::AR::Base.establish_connection(Source::Illiad.config.db)
22
+ end
18
23
  end
19
24
  end
20
25
  end
@@ -15,7 +15,7 @@ module Source
15
15
 
16
16
  def charged?(force = false)
17
17
  if force then
18
- t = IlliadAR::AR::Transaction.find(@id)
18
+ t = ::Illiad::AR::Transaction.find(@id)
19
19
  @due_date = t.due_date
20
20
  @charged = t.charged?
21
21
  end
@@ -28,12 +28,12 @@ module Source
28
28
  agent = Mechanize.new# { |a| a.log = Logger.new(STDERR) }
29
29
 
30
30
  # Load Illiad Web Circulation
31
- page = agent.get(Source::Illiad.config.webcirc[:url])
31
+ page = agent.get(Source::Illiad.config.webcirc['url'])
32
32
 
33
33
  # Select, fill in, and submit the logon form.
34
34
  page = page.form('formLogon') do |f|
35
- f.TextBoxUsername = Source::Illiad.config.webcirc[:username]
36
- f.TextBoxPassword = Source::Illiad.config.webcirc[:password]
35
+ f.TextBoxUsername = Source::Illiad.config.webcirc['username']
36
+ f.TextBoxPassword = Source::Illiad.config.webcirc['password']
37
37
  end.click_button
38
38
 
39
39
  # Mechanize::ResponseCodeError - 500 => Net::HTTPInternalServerError:
@@ -1,5 +1,5 @@
1
1
  module Source
2
2
  module Illiad
3
- VERSION = "0.0.2"
3
+ VERSION = "0.0.4"
4
4
  end
5
5
  end
metadata CHANGED
@@ -2,7 +2,7 @@
2
2
  name: nostos-source-illiad
3
3
  version: !ruby/object:Gem::Version
4
4
  prerelease:
5
- version: 0.0.2
5
+ version: 0.0.4
6
6
  platform: ruby
7
7
  authors:
8
8
  - Brice Stacey
@@ -10,7 +10,7 @@ autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
12
 
13
- date: 2011-04-15 00:00:00 Z
13
+ date: 2011-04-21 00:00:00 Z
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency
16
16
  name: illiad
@@ -51,6 +51,7 @@ files:
51
51
  - lib/illiad/transaction.rb
52
52
  - lib/nostos-source-illiad.rb
53
53
  - lib/nostos-source-illiad/config.rb
54
+ - lib/nostos-source-illiad/generators/source_illiad_generator.rb
54
55
  - lib/nostos-source-illiad/railtie.rb
55
56
  - lib/nostos-source-illiad/record.rb
56
57
  - lib/nostos-source-illiad/version.rb