ragdoll-rails 0.1.8 → 0.1.9

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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: c65d1b42c610da8ca427a88eae05c3e7636d2b3521a2c0ecccf09efc55af335d
4
- data.tar.gz: d1ca9240447923aeeb896c57da732d92b874fa3ebf2645306d74f5ee435e642d
3
+ metadata.gz: b281102216de9a922f017373bc1510946bbb530c229d8e2362aaf09257125450
4
+ data.tar.gz: 7af9bf6f7a3024445e70088d9698d1f5baafa1adb3ecd03f8efb6aee1799d707
5
5
  SHA512:
6
- metadata.gz: e656136397c64bbb15923dea45d071dc7ea8a71f3d8334ea7ed69ee1e08d2c067b0358af02e996f822f8fdf57908bfbc47de75aadebdbbe811e5273b242b0594
7
- data.tar.gz: 1ca6e7f05d39f3135d2623cb3d2c12a6d7822553ed462f991631e4b3d05be6b0e77e667913b72219f08ce06145937b42f9366fa803cb92133adce6221c621cee
6
+ metadata.gz: 0c9457bed61b4c8c26dbffb8b448d777c0f4df3244320eddb020c4b9386328dca3249c5f2af7fbdab622f6727b0e86354ef6d5e2b216e483b7946a6bfa2f81ec
7
+ data.tar.gz: 2aa4a94c63eb0bd651f865801ec36624326281b62f6b26043d18def963a7905155a9c25746f17272811c162cceb322656672f7385b0f62a50972083293b9264d
data/README.md CHANGED
@@ -157,14 +157,12 @@ Ragdoll.add_text('Content', title: 'Guide')
157
157
  Ragdoll.add_directory('/knowledge-base', recursive: true)
158
158
 
159
159
  # Manage documents
160
- client = Ragdoll::Client.new
161
- client.update_document(123, title: 'New Title')
162
- client.delete_document(123)
163
- client.list_documents(limit: 50)
160
+ Ragdoll.update_document(id: 123, title: 'New Title')
161
+ Ragdoll.delete_document(id: 123)
162
+ Ragdoll.list_documents(limit: 50)
164
163
 
165
164
  # Bulk operations
166
- client.reprocess_failed
167
- client.add_directory('/docs', recursive: true)
165
+ Ragdoll.add_directory(path: '/docs', recursive: true)
168
166
  ```
169
167
 
170
168
  ## 🏗️ Rails Integration Examples
@@ -194,15 +192,11 @@ end
194
192
 
195
193
  ```ruby
196
194
  class SupportBot
197
- def initialize
198
- @ragdoll = Ragdoll::Client.new
199
- end
200
-
201
195
  def answer_question(question, category: nil)
202
196
  filters = { document_type: 'pdf' } if category == 'manual'
203
197
 
204
- context = @ragdoll.get_context(
205
- question,
198
+ context = Ragdoll.get_context(
199
+ query: question,
206
200
  limit: 3,
207
201
  threshold: 0.8,
208
202
  filters: filters
@@ -229,10 +223,8 @@ end
229
223
  ```ruby
230
224
  class ProcessDocumentsJob < ApplicationJob
231
225
  def perform(file_paths)
232
- ragdoll = Ragdoll::Client.new
233
-
234
226
  file_paths.each do |path|
235
- ragdoll.add_file(path, process_immediately: true)
227
+ Ragdoll.add_document(path: path)
236
228
  end
237
229
  end
238
230
  end
@@ -434,12 +426,17 @@ healthy = Ragdoll.client.healthy?
434
426
  # spec/support/ragdoll_helpers.rb
435
427
  module RagdollHelpers
436
428
  def setup_test_documents
437
- @ragdoll = Ragdoll::Client.new
438
- @doc = @ragdoll.add_text(
439
- "Rails is a web framework",
440
- title: "Rails Guide",
441
- process_immediately: true
442
- )
429
+ temp_file = Tempfile.new(['test_doc', '.txt'])
430
+ temp_file.write("Rails is a web framework")
431
+ temp_file.rewind
432
+
433
+ begin
434
+ result = Ragdoll.add_document(path: temp_file.path)
435
+ @doc = Ragdoll::Document.find(result[:document_id]) if result[:success]
436
+ ensure
437
+ temp_file.close
438
+ temp_file.unlink
439
+ end
443
440
  end
444
441
  end
445
442
 
data/config/routes.rb CHANGED
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- Ragdoll::Engine.routes.draw do
3
+ Ragdoll::Rails::Engine.routes.draw do
4
4
  # Define your engine routes here
5
5
  end
@@ -21,10 +21,11 @@ Next steps:
21
21
  export GOOGLE_API_KEY="your-api-key-here"
22
22
  export GOOGLE_PROJECT_ID="your-project-id"
23
23
 
24
- 2. Install and run database migrations:
24
+ 2. Run database migrations:
25
25
 
26
- rails ragdoll:install:migrations
27
26
  rails db:migrate
27
+
28
+ Note: Migrations have been automatically copied to your db/migrate directory.
28
29
 
29
30
  3. Ensure you have PostgreSQL with pgvector extension installed:
30
31
 
@@ -0,0 +1,68 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'rails/generators'
4
+ require 'rails/generators/active_record'
5
+
6
+ module Ragdoll
7
+ class InitGenerator < ::Rails::Generators::Base
8
+ include ::Rails::Generators::Migration
9
+
10
+ desc "Create Ragdoll configuration initializer and install migrations"
11
+ source_root File.expand_path("init/templates", __dir__)
12
+
13
+ def create_initializer_file
14
+ template "ragdoll_config.rb", "config/initializers/ragdoll_config.rb"
15
+ end
16
+
17
+ def copy_migrations
18
+ say "Installing Ragdoll migrations..."
19
+
20
+ # Find the ragdoll gem path
21
+ begin
22
+ ragdoll_path = Gem::Specification.find_by_name('ragdoll').gem_dir
23
+ rescue Gem::MissingSpecError
24
+ # If not found as a gem (e.g., using path in Gemfile), try to find it relative to this engine
25
+ ragdoll_path = File.expand_path("../../../../../ragdoll", __dir__)
26
+ end
27
+
28
+ migration_source_path = File.join(ragdoll_path, 'db/migrate')
29
+
30
+ if File.exist?(migration_source_path)
31
+ Dir.glob("#{migration_source_path}/*.rb").each do |migration_file|
32
+ migration_name = File.basename(migration_file)
33
+
34
+ # Check if migration already exists in the app
35
+ if migration_exists?(migration_name)
36
+ say_status "skip", migration_name, :yellow
37
+ else
38
+ copy_file migration_file, "db/migrate/#{migration_name}"
39
+ say_status "copied", migration_name, :green
40
+ end
41
+ end
42
+ else
43
+ say "Warning: Could not find Ragdoll migrations at #{migration_source_path}", :red
44
+ end
45
+ end
46
+
47
+ def show_readme
48
+ readme "INSTALL" if behavior == :invoke
49
+ end
50
+
51
+ private
52
+
53
+ def application_name
54
+ ::Rails.application.class.name.split("::").first.underscore
55
+ end
56
+
57
+ def migration_exists?(filename)
58
+ Dir.glob("#{destination_root}/db/migrate/*.rb").any? do |existing_file|
59
+ File.basename(existing_file) == filename
60
+ end
61
+ end
62
+
63
+ # Required for Rails::Generators::Migration
64
+ def self.next_migration_number(dirname)
65
+ ::ActiveRecord::Generators::Base.next_migration_number(dirname)
66
+ end
67
+ end
68
+ end
@@ -5,7 +5,24 @@ require 'rails/engine'
5
5
  module Ragdoll
6
6
  module Rails
7
7
  class Engine < ::Rails::Engine
8
- isolate_namespace Ragdoll
8
+ isolate_namespace Ragdoll::Rails
9
+ engine_name 'ragdoll'
10
+
11
+ # Configure the engine to use migrations from the ragdoll gem
12
+ # Find the ragdoll gem path
13
+ begin
14
+ ragdoll_path = Gem::Specification.find_by_name('ragdoll').gem_dir
15
+ rescue Gem::MissingSpecError
16
+ # If not found as a gem (e.g., using path in Gemfile), try to find it relative to this engine
17
+ ragdoll_path = File.expand_path("../../../../ragdoll", __dir__)
18
+ end
19
+
20
+ migration_path = File.join(ragdoll_path, 'db/migrate')
21
+
22
+ # Set the migration paths for this engine to point to ragdoll gem
23
+ if File.exist?(migration_path)
24
+ config.paths["db/migrate"] = [migration_path]
25
+ end
9
26
 
10
27
  config.generators do |g|
11
28
  g.test_framework :rspec
@@ -4,6 +4,6 @@
4
4
 
5
5
  module Ragdoll
6
6
  module Rails
7
- VERSION = "0.1.8"
7
+ VERSION = "0.1.9"
8
8
  end
9
9
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: ragdoll-rails
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.8
4
+ version: 0.1.9
5
5
  platform: ruby
6
6
  authors:
7
7
  - Dewayne VanHoozer
@@ -15,28 +15,168 @@ dependencies:
15
15
  requirements:
16
16
  - - ">="
17
17
  - !ruby/object:Gem::Version
18
- version: 0.1.0
18
+ version: '0'
19
19
  type: :runtime
20
20
  prerelease: false
21
21
  version_requirements: !ruby/object:Gem::Requirement
22
22
  requirements:
23
23
  - - ">="
24
24
  - !ruby/object:Gem::Version
25
- version: 0.1.0
25
+ version: '0'
26
26
  - !ruby/object:Gem::Dependency
27
27
  name: rails
28
28
  requirement: !ruby/object:Gem::Requirement
29
29
  requirements:
30
30
  - - ">="
31
31
  - !ruby/object:Gem::Version
32
- version: 7.0.0
32
+ version: 8.0.2
33
33
  type: :runtime
34
34
  prerelease: false
35
35
  version_requirements: !ruby/object:Gem::Requirement
36
36
  requirements:
37
37
  - - ">="
38
38
  - !ruby/object:Gem::Version
39
- version: 7.0.0
39
+ version: 8.0.2
40
+ - !ruby/object:Gem::Dependency
41
+ name: sidekiq
42
+ requirement: !ruby/object:Gem::Requirement
43
+ requirements:
44
+ - - ">="
45
+ - !ruby/object:Gem::Version
46
+ version: '0'
47
+ type: :runtime
48
+ prerelease: false
49
+ version_requirements: !ruby/object:Gem::Requirement
50
+ requirements:
51
+ - - ">="
52
+ - !ruby/object:Gem::Version
53
+ version: '0'
54
+ - !ruby/object:Gem::Dependency
55
+ name: amazing_print
56
+ requirement: !ruby/object:Gem::Requirement
57
+ requirements:
58
+ - - ">="
59
+ - !ruby/object:Gem::Version
60
+ version: '0'
61
+ type: :development
62
+ prerelease: false
63
+ version_requirements: !ruby/object:Gem::Requirement
64
+ requirements:
65
+ - - ">="
66
+ - !ruby/object:Gem::Version
67
+ version: '0'
68
+ - !ruby/object:Gem::Dependency
69
+ name: debug_me
70
+ requirement: !ruby/object:Gem::Requirement
71
+ requirements:
72
+ - - ">="
73
+ - !ruby/object:Gem::Version
74
+ version: '0'
75
+ type: :development
76
+ prerelease: false
77
+ version_requirements: !ruby/object:Gem::Requirement
78
+ requirements:
79
+ - - ">="
80
+ - !ruby/object:Gem::Version
81
+ version: '0'
82
+ - !ruby/object:Gem::Dependency
83
+ name: claude-on-rails
84
+ requirement: !ruby/object:Gem::Requirement
85
+ requirements:
86
+ - - ">="
87
+ - !ruby/object:Gem::Version
88
+ version: '0'
89
+ type: :development
90
+ prerelease: false
91
+ version_requirements: !ruby/object:Gem::Requirement
92
+ requirements:
93
+ - - ">="
94
+ - !ruby/object:Gem::Version
95
+ version: '0'
96
+ - !ruby/object:Gem::Dependency
97
+ name: rspec
98
+ requirement: !ruby/object:Gem::Requirement
99
+ requirements:
100
+ - - ">="
101
+ - !ruby/object:Gem::Version
102
+ version: '0'
103
+ type: :development
104
+ prerelease: false
105
+ version_requirements: !ruby/object:Gem::Requirement
106
+ requirements:
107
+ - - ">="
108
+ - !ruby/object:Gem::Version
109
+ version: '0'
110
+ - !ruby/object:Gem::Dependency
111
+ name: rspec-core
112
+ requirement: !ruby/object:Gem::Requirement
113
+ requirements:
114
+ - - ">="
115
+ - !ruby/object:Gem::Version
116
+ version: '0'
117
+ type: :development
118
+ prerelease: false
119
+ version_requirements: !ruby/object:Gem::Requirement
120
+ requirements:
121
+ - - ">="
122
+ - !ruby/object:Gem::Version
123
+ version: '0'
124
+ - !ruby/object:Gem::Dependency
125
+ name: rspec-expectations
126
+ requirement: !ruby/object:Gem::Requirement
127
+ requirements:
128
+ - - ">="
129
+ - !ruby/object:Gem::Version
130
+ version: '0'
131
+ type: :development
132
+ prerelease: false
133
+ version_requirements: !ruby/object:Gem::Requirement
134
+ requirements:
135
+ - - ">="
136
+ - !ruby/object:Gem::Version
137
+ version: '0'
138
+ - !ruby/object:Gem::Dependency
139
+ name: rspec-mocks
140
+ requirement: !ruby/object:Gem::Requirement
141
+ requirements:
142
+ - - ">="
143
+ - !ruby/object:Gem::Version
144
+ version: '0'
145
+ type: :development
146
+ prerelease: false
147
+ version_requirements: !ruby/object:Gem::Requirement
148
+ requirements:
149
+ - - ">="
150
+ - !ruby/object:Gem::Version
151
+ version: '0'
152
+ - !ruby/object:Gem::Dependency
153
+ name: factory_bot_rails
154
+ requirement: !ruby/object:Gem::Requirement
155
+ requirements:
156
+ - - ">="
157
+ - !ruby/object:Gem::Version
158
+ version: '0'
159
+ type: :development
160
+ prerelease: false
161
+ version_requirements: !ruby/object:Gem::Requirement
162
+ requirements:
163
+ - - ">="
164
+ - !ruby/object:Gem::Version
165
+ version: '0'
166
+ - !ruby/object:Gem::Dependency
167
+ name: database_cleaner-active_record
168
+ requirement: !ruby/object:Gem::Requirement
169
+ requirements:
170
+ - - ">="
171
+ - !ruby/object:Gem::Version
172
+ version: '0'
173
+ type: :development
174
+ prerelease: false
175
+ version_requirements: !ruby/object:Gem::Requirement
176
+ requirements:
177
+ - - ">="
178
+ - !ruby/object:Gem::Version
179
+ version: '0'
40
180
  description: Rails engine providing ActiveRecord integration, background jobs, and
41
181
  UI components for the Ragdoll RAG (Retrieval-Augmented Generation) system
42
182
  email:
@@ -49,9 +189,9 @@ files:
49
189
  - Rakefile
50
190
  - config/initializers/ragdoll.rb
51
191
  - config/routes.rb
52
- - lib/generators/ragdoll/init/init_generator.rb
53
192
  - lib/generators/ragdoll/init/templates/INSTALL
54
193
  - lib/generators/ragdoll/init/templates/ragdoll_config.rb
194
+ - lib/generators/ragdoll/init_generator.rb
55
195
  - lib/ragdoll-rails.rb
56
196
  - lib/ragdoll/rails.rb
57
197
  - lib/ragdoll/rails/configuration.rb
@@ -1,26 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- require 'rails/generators'
4
-
5
- module Ragdoll
6
- module Generators
7
- class InitGenerator < Rails::Generators::Base
8
- desc "Create Ragdoll configuration initializer"
9
- source_root File.expand_path("templates", __dir__)
10
-
11
- def create_initializer_file
12
- template "ragdoll_config.rb", "config/initializers/ragdoll_config.rb"
13
- end
14
-
15
- def show_readme
16
- readme "INSTALL" if behavior == :invoke
17
- end
18
-
19
- private
20
-
21
- def application_name
22
- Rails.application.class.name.split("::").first.underscore
23
- end
24
- end
25
- end
26
- end