traject_horizon 1.2.0 → 1.2.1

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.
checksums.yaml ADDED
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: 29c758569e67537ff229e7164ecf684050602286
4
+ data.tar.gz: e1cebb44ff2ac1cb794b7e591eef29c3e8b4741b
5
+ SHA512:
6
+ metadata.gz: ea9b3cf1c58394594ed9093e56d065925eb86981acc8b2f70a66316f4906a470aae828fb2fb2ed7c56346b84dd34bf2af9659195100c9432bac0b8cf231d7199
7
+ data.tar.gz: 6ab6d5e79a425dc7f3bdfe643d19fac16c29c401fe9dfa85a8d4027d34465f5b2f0f3450bf27a63fc16d4ee8dd7fd279d78d3caf776182f0aef03507c019d783
data/README.md CHANGED
@@ -149,6 +149,25 @@ Currently, item/copy information may not be treated entirely consistent here,
149
149
  there may be edge-case encoding bugs related to non-ascii item/copy notes etc,
150
150
  and it may not be possible to output them in Marc8. Sorry.
151
151
 
152
+ ## Note on Horizon deleted records
153
+
154
+ When records are deleted in horizon, they remain in the Horizon database for a while until purged.
155
+ While deleted records remain, they have leader byte 5 set to 'd', which indicates deleted in Marc21.
156
+
157
+ You may want to skip these records when indexing. There's no feature
158
+ in `traject_horizon` to do that at present, but you can use the standard
159
+ traject `skip!` feature. At the beginning of your traject configuration:
160
+
161
+ ~~~ruby
162
+ # Skip records with leader byte 5 'd', those are records marked
163
+ # for deletion but not yet purged from horizon.
164
+ each_record do |record, context|
165
+ if record.leader[5] == 'd'
166
+ context.skip!("Leader byte 5 is 'd', record marked for deletion in Horizon")
167
+ end
168
+ end
169
+ ~~~
170
+
152
171
  ## Challenges
153
172
 
154
173
  I had to reverse engineer the Horizon database to figure out how to turn it into
@@ -29,6 +29,12 @@ module Traject
29
29
  # [horizon.database] (default 'horizon')
30
30
  # [horizon.jtds_type] default 'sybase', or 'sqlserver'
31
31
  #
32
+ # [horizon.timeout] value in SECONDS given to jtds driver for socketTimeout and loginTimeout.
33
+ # if this is not set, if Horizon db or server goes down in mid-export,
34
+ # your program may hang forever. However, the trade-off is when this is set,
35
+ # a slow query may trigger timeout. As a compromise, we've set DEFAULT
36
+ # to 1200 seconds (20 minutes).
37
+ #
32
38
  #
33
39
  # == What to export
34
40
  #
@@ -688,6 +694,10 @@ module Traject
688
694
  # Not sure if useCursors makes a difference, but just in case.
689
695
  url += ";useCursors=true"
690
696
 
697
+ if timeout = settings['horizon.timeout']
698
+ url += ";socketTimeout=#{timeout};loginTimeout=#{timeout}"
699
+ end
700
+
691
701
  if include_password
692
702
  password = settings['horizon.password'] or raise ArgumentError.new("Need horizon.password setting")
693
703
  url += ";password=#{password}"
@@ -714,6 +724,8 @@ module Traject
714
724
 
715
725
  def self.default_settings
716
726
  {
727
+ "horizon.timeout" => 1200, # 1200 seconds == 20 minutes
728
+
717
729
  "horizon.batch_size" => 400,
718
730
 
719
731
  "horizon.public_only" => true,
@@ -1,3 +1,3 @@
1
1
  module TrajectHorizon
2
- VERSION = "1.2.0"
2
+ VERSION = "1.2.1"
3
3
  end
metadata CHANGED
@@ -1,113 +1,100 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: traject_horizon
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.2.0
5
- prerelease:
4
+ version: 1.2.1
6
5
  platform: ruby
7
6
  authors:
8
7
  - Jonathan Rochkind
9
- autorequire:
8
+ autorequire:
10
9
  bindir: bin
11
10
  cert_chain: []
12
- date: 2014-01-06 00:00:00.000000000 Z
11
+ date: 2014-01-08 00:00:00.000000000 Z
13
12
  dependencies:
14
13
  - !ruby/object:Gem::Dependency
15
14
  name: traject
16
- requirement: !ruby/object:Gem::Requirement
17
- none: false
15
+ version_requirements: !ruby/object:Gem::Requirement
18
16
  requirements:
19
- - - ! '>='
17
+ - - '>='
20
18
  - !ruby/object:Gem::Version
21
19
  version: '0'
22
- type: :runtime
23
- prerelease: false
24
- version_requirements: !ruby/object:Gem::Requirement
25
- none: false
20
+ requirement: !ruby/object:Gem::Requirement
26
21
  requirements:
27
- - - ! '>='
22
+ - - '>='
28
23
  - !ruby/object:Gem::Version
29
24
  version: '0'
25
+ prerelease: false
26
+ type: :runtime
30
27
  - !ruby/object:Gem::Dependency
31
28
  name: marc-marc4j
32
- requirement: !ruby/object:Gem::Requirement
33
- none: false
29
+ version_requirements: !ruby/object:Gem::Requirement
34
30
  requirements:
35
- - - ! '>='
31
+ - - '>='
36
32
  - !ruby/object:Gem::Version
37
33
  version: '0'
38
- type: :runtime
39
- prerelease: false
40
- version_requirements: !ruby/object:Gem::Requirement
41
- none: false
34
+ requirement: !ruby/object:Gem::Requirement
42
35
  requirements:
43
- - - ! '>='
36
+ - - '>='
44
37
  - !ruby/object:Gem::Version
45
38
  version: '0'
39
+ prerelease: false
40
+ type: :runtime
46
41
  - !ruby/object:Gem::Dependency
47
42
  name: ensure_valid_encoding
48
- requirement: !ruby/object:Gem::Requirement
49
- none: false
43
+ version_requirements: !ruby/object:Gem::Requirement
50
44
  requirements:
51
- - - ! '>='
45
+ - - '>='
52
46
  - !ruby/object:Gem::Version
53
47
  version: 0.5.3
54
- type: :runtime
55
- prerelease: false
56
- version_requirements: !ruby/object:Gem::Requirement
57
- none: false
48
+ requirement: !ruby/object:Gem::Requirement
58
49
  requirements:
59
- - - ! '>='
50
+ - - '>='
60
51
  - !ruby/object:Gem::Version
61
52
  version: 0.5.3
53
+ prerelease: false
54
+ type: :runtime
62
55
  - !ruby/object:Gem::Dependency
63
56
  name: bundler
64
- requirement: !ruby/object:Gem::Requirement
65
- none: false
57
+ version_requirements: !ruby/object:Gem::Requirement
66
58
  requirements:
67
59
  - - ~>
68
60
  - !ruby/object:Gem::Version
69
61
  version: '1.3'
70
- type: :development
71
- prerelease: false
72
- version_requirements: !ruby/object:Gem::Requirement
73
- none: false
62
+ requirement: !ruby/object:Gem::Requirement
74
63
  requirements:
75
64
  - - ~>
76
65
  - !ruby/object:Gem::Version
77
66
  version: '1.3'
67
+ prerelease: false
68
+ type: :development
78
69
  - !ruby/object:Gem::Dependency
79
70
  name: rake
80
- requirement: !ruby/object:Gem::Requirement
81
- none: false
71
+ version_requirements: !ruby/object:Gem::Requirement
82
72
  requirements:
83
- - - ! '>='
73
+ - - '>='
84
74
  - !ruby/object:Gem::Version
85
75
  version: '0'
86
- type: :development
87
- prerelease: false
88
- version_requirements: !ruby/object:Gem::Requirement
89
- none: false
76
+ requirement: !ruby/object:Gem::Requirement
90
77
  requirements:
91
- - - ! '>='
78
+ - - '>='
92
79
  - !ruby/object:Gem::Version
93
80
  version: '0'
81
+ prerelease: false
82
+ type: :development
94
83
  - !ruby/object:Gem::Dependency
95
84
  name: minitest
96
- requirement: !ruby/object:Gem::Requirement
97
- none: false
85
+ version_requirements: !ruby/object:Gem::Requirement
98
86
  requirements:
99
- - - ! '>='
87
+ - - '>='
100
88
  - !ruby/object:Gem::Version
101
89
  version: '0'
102
- type: :development
103
- prerelease: false
104
- version_requirements: !ruby/object:Gem::Requirement
105
- none: false
90
+ requirement: !ruby/object:Gem::Requirement
106
91
  requirements:
107
- - - ! '>='
92
+ - - '>='
108
93
  - !ruby/object:Gem::Version
109
94
  version: '0'
110
- description:
95
+ prerelease: false
96
+ type: :development
97
+ description:
111
98
  email:
112
99
  - jonathan@dnil.net
113
100
  executables: []
@@ -132,30 +119,29 @@ files:
132
119
  homepage: http://github.com/jrochkind/traject_horizon
133
120
  licenses:
134
121
  - MIT
135
- post_install_message:
122
+ metadata: {}
123
+ post_install_message:
136
124
  rdoc_options: []
137
125
  require_paths:
138
126
  - lib
139
127
  required_ruby_version: !ruby/object:Gem::Requirement
140
- none: false
141
128
  requirements:
142
- - - ! '>='
129
+ - - '>='
143
130
  - !ruby/object:Gem::Version
144
131
  version: '0'
145
132
  required_rubygems_version: !ruby/object:Gem::Requirement
146
- none: false
147
133
  requirements:
148
- - - ! '>='
134
+ - - '>='
149
135
  - !ruby/object:Gem::Version
150
136
  version: '0'
151
137
  requirements: []
152
- rubyforge_project:
153
- rubygems_version: 1.8.23
154
- signing_key:
155
- specification_version: 3
138
+ rubyforge_project:
139
+ rubygems_version: 2.1.11
140
+ signing_key:
141
+ specification_version: 4
156
142
  summary: Horizon ILS MARC Exporter, a plugin for the traject tool
157
143
  test_files:
158
144
  - test/horizon_bib_auth_merge_test.rb
159
145
  - test/horizon_convert_text_test.rb
160
146
  - test/test_helper.rb
161
- has_rdoc:
147
+ has_rdoc: