From 550d170d43c9ac9172eea91690051615ca4e51f1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Piotr=20G=C4=99bala?= Date: Tue, 18 Mar 2025 13:39:25 +0100 Subject: [PATCH 01/12] Dockerize instalation --- Dockerfile | 23 +++++++++++++++++++++++ docker-compose.yml | 28 ++++++++++++++++++++++++++++ 2 files changed, 51 insertions(+) create mode 100644 Dockerfile create mode 100644 docker-compose.yml diff --git a/Dockerfile b/Dockerfile new file mode 100644 index 00000000..17e3b1dc --- /dev/null +++ b/Dockerfile @@ -0,0 +1,23 @@ +FROM ruby:3.4 + +ARG JAVA_VERSION +ENV JAVA_VERSION=$JAVA_VERSION + +# Adding Java package +RUN apt install -y wget apt-transport-https gpg +RUN wget -qO - https://packages.adoptium.net/artifactory/api/gpg/key/public | gpg --dearmor | tee /etc/apt/trusted.gpg.d/adoptium.gpg > /dev/null +RUN echo "deb https://packages.adoptium.net/artifactory/deb $(awk -F= '/^VERSION_CODENAME/{print$2}' /etc/os-release) main" | tee /etc/apt/sources.list.d/adoptium.list + +# Installing packages +RUN echo "Installing Java $JAVA_VERSION" +RUN apt-get update && apt-get upgrade -y && apt-get install -y python3-pip temurin-$JAVA_VERSION-jdk + +# Installing boltkit +RUN pip3 install --user git+https://github.com/klobuczek/boltkit@1.3#egg=boltkit --break-system-packages +RUN echo "export PATH=/root/.local/bin:$PATH" >> ~/.bashrc + +WORKDIR /app +COPY . . +RUN ./bin/setup + +CMD ["bundle exec rspec spec"] diff --git a/docker-compose.yml b/docker-compose.yml new file mode 100644 index 00000000..11910392 --- /dev/null +++ b/docker-compose.yml @@ -0,0 +1,28 @@ +version: '3' +services: + ruby: + build: + context: . + args: + - JAVA_VERSION=11 + + volumes: + - .:/app + links: + - neo4j + environment: + - TEST_NEO4J_HOST=neo4j + - TEST_NEO4J_PORT=7687 + - TEST_NEO4J_USER=neo4j + - TEST_NEO4J_PASS=pass + - TEST_NEO4J_SCHEME=bolt + - TEST_NEO4J_DATABASE=neo4j + - NEO4J_VERSION=4.4.5 + neo4j: + image: neo4j:4.4.5-enterprise + ports: + - 7474:7474 + - 7687:7687 + environment: + - NEO4J_AUTH=neo4j/pass + - NEO4J_ACCEPT_LICENSE_AGREEMENT=yes From 32b15db3fff2dfb600e105883c7fc2aba13e38db Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Piotr=20G=C4=99bala?= Date: Tue, 18 Mar 2025 13:40:18 +0100 Subject: [PATCH 02/12] Support Ruby 3.4 --- Rakefile | 4 ++++ spec/integration/load_csv_spec.rb | 5 ++++- 2 files changed, 8 insertions(+), 1 deletion(-) diff --git a/Rakefile b/Rakefile index 7eb3532c..dd46e206 100644 --- a/Rakefile +++ b/Rakefile @@ -32,6 +32,10 @@ end.spec 'neo4j-ruby-driver' do dependency 'rspec-mocks', '>= 0', :dev dependency 'zeitwerk', '>= 2.1.10' + if Gem::Version.new(RUBY_VERSION) >= Gem::Version.new('3.3') + dependency "csv", "~> 3.0", :dev + end + spec_extras[:require_paths] = ['lib', jruby? ? 'jruby' : 'ruby'] self.clean_globs += %w[Gemfile Gemfile.lock *.gemspec lib/org lib/*_jars.rb] diff --git a/spec/integration/load_csv_spec.rb b/spec/integration/load_csv_spec.rb index 09c1a5f0..c7e1be1a 100755 --- a/spec/integration/load_csv_spec.rb +++ b/spec/integration/load_csv_spec.rb @@ -1,6 +1,9 @@ # frozen_string_literal: true -require 'csv' +if Gem::Version.new(RUBY_VERSION) <= Gem::Version.new('3.3') + require 'csv' +end + require 'tempfile' RSpec.describe 'LoadCsv', csv: true do From 91243f6ead8c53aedf2c744493042220eb7b66fe Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Piotr=20G=C4=99bala?= Date: Tue, 18 Mar 2025 13:40:44 +0100 Subject: [PATCH 03/12] Add pry dev dependency for debugging --- Rakefile | 1 + spec/spec_helper.rb | 1 + 2 files changed, 2 insertions(+) diff --git a/Rakefile b/Rakefile index dd46e206..870a5075 100644 --- a/Rakefile +++ b/Rakefile @@ -23,6 +23,7 @@ end.spec 'neo4j-ruby-driver' do active_support_version = ENV['ACTIVE_SUPPORT_VERSION'] dependency 'activesupport', active_support_version&.length&.positive? ? "~> #{active_support_version}" : '>= 7.1' # dependency 'async-rspec', '>= 0', :dev + dependency 'pry', '>= 0', :dev dependency 'ffaker', '>= 0', :dev dependency 'hoe', '>= 0', :dev dependency 'hoe-bundler', '>= 0', :dev diff --git a/spec/spec_helper.rb b/spec/spec_helper.rb index 80630bda..18e07734 100644 --- a/spec/spec_helper.rb +++ b/spec/spec_helper.rb @@ -13,6 +13,7 @@ require 'rspec/its' require 'support/driver_helper' require 'support/neo4j_cleaner' +require 'pry' RSpec.configure do |config| # Enable flags like --only-failures and --next-failure From cec7d6320c9f7a82f64c724a524329b4760a0795 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Piotr=20G=C4=99bala?= Date: Tue, 18 Mar 2025 13:41:22 +0100 Subject: [PATCH 04/12] Reuse ENV variables --- docs/dev_manual_examples.rb | 4 ++-- spec/neo4j/driver/util/cc/cluster.rb | 3 +-- spec/support/driver_helper.rb | 4 ++++ 3 files changed, 7 insertions(+), 4 deletions(-) diff --git a/docs/dev_manual_examples.rb b/docs/dev_manual_examples.rb index acae3c6d..e548e45d 100644 --- a/docs/dev_manual_examples.rb +++ b/docs/dev_manual_examples.rb @@ -10,8 +10,8 @@ # Example 4. Hello World ###################################### -Neo4j::Driver::GraphDatabase.driver('bolt://localhost:7687', - Neo4j::Driver::AuthTokens.basic('neo4j', 'password')) do |driver| +Neo4j::Driver::GraphDatabase.driver("bolt://#{ENV['TEST_NEO4J_HOST']}:7687", + Neo4j::Driver::AuthTokens.basic('neo4j', 'pass')) do |driver| driver.session do |session| greeting = session.write_transaction do |tx| result = tx.run("CREATE (a:Greeting) SET a.message = $message RETURN a.message + ', from node ' + id(a)", diff --git a/spec/neo4j/driver/util/cc/cluster.rb b/spec/neo4j/driver/util/cc/cluster.rb index c5d4cf67..8b0a221f 100644 --- a/spec/neo4j/driver/util/cc/cluster.rb +++ b/spec/neo4j/driver/util/cc/cluster.rb @@ -127,8 +127,7 @@ def driver(bolt_uri) def core_member?(driver) driver.session(default_access_mode: Neo4j::Driver::AccessMode::READ) do |session| %w[LEADER FOLLOWER].include?( - session.run("CALL dbms.cluster.role($database)", database: 'neo4j') - .single.first + session.run("CALL dbms.cluster.role($database)", database: database).single.first ) end end diff --git a/spec/support/driver_helper.rb b/spec/support/driver_helper.rb index 131d988c..9a8712d3 100644 --- a/spec/support/driver_helper.rb +++ b/spec/support/driver_helper.rb @@ -26,6 +26,10 @@ def neo4j_password ENV.fetch('TEST_NEO4J_PASS', 'password') end + def database + ENV.fetch('TEST_NEO4J_DATABASE', 'neo4j') + end + def driver self.single_driver ||= Neo4j::Driver::GraphDatabase.driver( uri, basic_auth_token, From ac83046b796091e9fb65cd8450e1150f649336ec Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Piotr=20G=C4=99bala?= Date: Tue, 18 Mar 2025 13:41:44 +0100 Subject: [PATCH 05/12] Improve debugging messages --- spec/neo4j/driver/util/cc/cluster_control.rb | 8 ++++++++ spec/neo4j/driver/util/cc/shared_cluster.rb | 3 ++- 2 files changed, 10 insertions(+), 1 deletion(-) diff --git a/spec/neo4j/driver/util/cc/cluster_control.rb b/spec/neo4j/driver/util/cc/cluster_control.rb index 89fcc641..1621571b 100644 --- a/spec/neo4j/driver/util/cc/cluster_control.rb +++ b/spec/neo4j/driver/util/cc/cluster_control.rb @@ -7,6 +7,7 @@ module CC class ClusterControl class << self def install_cluster(neo4j_version, cores, read_replicas, password, port, path) + debug("Installing cluster at #{path}") execute_command('neoctrl-cluster', 'install', '--cores', cores, '--read-replicas', read_replicas, '--password', password, '--initial-port', port, neo4j_version, path) end @@ -20,22 +21,27 @@ def start_cluster(path) end def start_cluster_member(path) + debug("Starting cluster member") execute_command('neoctrl-start', path) end def stop_cluster(path) + debug("Stopping cluster") execute_command('neoctrl-cluster', 'stop', path) unless debug? end def stop_cluster_member(path) + debug("Stopping cluster member") execute_command('neoctrl-stop', path) end def kill_cluster(path) + debug("Killing cluster") execute_command('neoctrl-cluster', 'stop', '--kill', path) end def kill_cluster_member(path) + debug("Killing cluster member") execute_command('neoctrl-stop', '--kill', path) end @@ -66,6 +72,8 @@ def output_line(type, base, increment, i) def output_lines(type, base, increment, n) n.times.map(&method(:output_line).curry.call(type, base, increment)) end + + alias debug puts end end end diff --git a/spec/neo4j/driver/util/cc/shared_cluster.rb b/spec/neo4j/driver/util/cc/shared_cluster.rb index b207a90c..91078659 100644 --- a/spec/neo4j/driver/util/cc/shared_cluster.rb +++ b/spec/neo4j/driver/util/cc/shared_cluster.rb @@ -43,7 +43,8 @@ def start # sleep(10) @cluster.members = members - debug("Cluster started: #{members}.") + debug("Cluster started:") + members.each { |member| debug(" #{member.bolt_uri}") } end def start_member(member) From f012f1ff61cc51dc81bff7e07dd516f962cb911d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Piotr=20G=C4=99bala?= Date: Tue, 18 Mar 2025 13:42:13 +0100 Subject: [PATCH 06/12] Remove Async restrictions and update codebase --- Rakefile | 2 +- .../internal/handlers/pulln/auto_pull_response_handler.rb | 5 +++-- .../internal/handlers/pulln/basic_pull_response_handler.rb | 1 + 3 files changed, 5 insertions(+), 3 deletions(-) diff --git a/Rakefile b/Rakefile index 870a5075..010e2030 100644 --- a/Rakefile +++ b/Rakefile @@ -52,7 +52,7 @@ end.spec 'neo4j-ruby-driver' do spec_extras[:requirements] = ->(requirements) { requirements << 'jar org.neo4j.driver, neo4j-java-driver-all, 5.27.0' } spec_extras[:platform] = 'java' else - dependency 'async', '< 2.13' + dependency 'async', '>= 0' dependency 'async-io', '>= 0' dependency 'connection_pool', '>= 0' dependency 'csv', '>= 0' diff --git a/ruby/neo4j/driver/internal/handlers/pulln/auto_pull_response_handler.rb b/ruby/neo4j/driver/internal/handlers/pulln/auto_pull_response_handler.rb index 451c30b4..9803e064 100644 --- a/ruby/neo4j/driver/internal/handlers/pulln/auto_pull_response_handler.rb +++ b/ruby/neo4j/driver/internal/handlers/pulln/auto_pull_response_handler.rb @@ -3,7 +3,7 @@ module Internal module Handlers module Pulln class AutoPullResponseHandler < BasicPullResponseHandler - delegate :signal, to: :@records + delegate :signal, to: :@queue_notification LONG_MAX_VALUE = 2 ** 63 - 1 def initialize(query, run_response_handler, connection, metadata_extractor, completion_listener, fetch_size) @@ -19,7 +19,8 @@ def initialize(query, run_response_handler, connection, metadata_extractor, comp @low_record_watermark = fetch_size * 0.3 end - @records = ::Async::Queue.new + @queue_notification = ::Async::Notification.new + @records = ::Async::Queue.new(available: @queue_notification) @auto_pull_enabled = true install_record_and_summary_consumers diff --git a/ruby/neo4j/driver/internal/handlers/pulln/basic_pull_response_handler.rb b/ruby/neo4j/driver/internal/handlers/pulln/basic_pull_response_handler.rb index a899c755..2aa442a5 100644 --- a/ruby/neo4j/driver/internal/handlers/pulln/basic_pull_response_handler.rb +++ b/ruby/neo4j/driver/internal/handlers/pulln/basic_pull_response_handler.rb @@ -13,6 +13,7 @@ def initialize(query, run_response_handler, connection, metadata_extractor, comp @metadata_extractor = Validator.require_non_nil!(metadata_extractor) @connection = Validator.require_non_nil!(connection) @completion_listener = Validator.require_non_nil!(completion_listener) + @async_notification = ::Async::Notification.new @state = State::READY_STATE @to_request = 0 end From ed86aaa5290e3918c2431993541430ef037403d7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Piotr=20G=C4=99bala?= Date: Tue, 18 Mar 2025 13:42:25 +0100 Subject: [PATCH 07/12] Fix some specs for dockerize env --- spec/integration/load_csv_spec.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/spec/integration/load_csv_spec.rb b/spec/integration/load_csv_spec.rb index c7e1be1a..3636c9a9 100755 --- a/spec/integration/load_csv_spec.rb +++ b/spec/integration/load_csv_spec.rb @@ -8,7 +8,7 @@ RSpec.describe 'LoadCsv', csv: true do let(:iris_class_names) { %w[Iris-setosa Iris-versicolor Iris-virginica] } - let(:file) { Tempfile.new('', 'tmp') } + let(:file) { Tempfile.new('', '/tmp') } let(:file_path) { file.path } let(:iris_data) do %w[sepal_length,sepal_width,petal_length,petal_width,class_name From d85c39becf6ef561de99392452e51c928266ac14 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Piotr=20G=C4=99bala?= Date: Tue, 18 Mar 2025 13:56:50 +0100 Subject: [PATCH 08/12] Remove not needed line --- .../internal/handlers/pulln/basic_pull_response_handler.rb | 1 - 1 file changed, 1 deletion(-) diff --git a/ruby/neo4j/driver/internal/handlers/pulln/basic_pull_response_handler.rb b/ruby/neo4j/driver/internal/handlers/pulln/basic_pull_response_handler.rb index 2aa442a5..a899c755 100644 --- a/ruby/neo4j/driver/internal/handlers/pulln/basic_pull_response_handler.rb +++ b/ruby/neo4j/driver/internal/handlers/pulln/basic_pull_response_handler.rb @@ -13,7 +13,6 @@ def initialize(query, run_response_handler, connection, metadata_extractor, comp @metadata_extractor = Validator.require_non_nil!(metadata_extractor) @connection = Validator.require_non_nil!(connection) @completion_listener = Validator.require_non_nil!(completion_listener) - @async_notification = ::Async::Notification.new @state = State::READY_STATE @to_request = 0 end From ded81a9724c7fac37191b0ed792350938bc3e91c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Piotr=20G=C4=99bala?= Date: Wed, 19 Mar 2025 15:40:35 +0100 Subject: [PATCH 09/12] Update README, ENV usage, make specs green again --- README.md | 14 ++++++++++++-- Rakefile | 8 ++++---- docker-compose.yml | 3 +-- spec/integration/load_csv_spec.rb | 2 +- spec/support/cluster_extension.rb | 6 +++--- spec/support/driver_helper.rb | 12 +++--------- 6 files changed, 24 insertions(+), 21 deletions(-) diff --git a/README.md b/README.md index 3f5ae778..48b95ec5 100644 --- a/README.md +++ b/README.md @@ -38,8 +38,18 @@ At this moment [The Neo4j Drivers Manual v4.4](https://neo4j.com/docs/java-manua This gem includes 2 different implementations: java driver wrapper and pure ruby driver $ bin/setup - -## Testing + +## Testing with docker + +The tests can be run with docker. + + $ docker compose run ruby-driver bash + $ bundle exec rspec spec + +To test different versions of neo4j, set the environment variable `NEO4J_VERSION` to the version you want to test. +Keep in mind to change JAVA_VERSION in the Dockerfile if you want to test with different java versions. + +## Testing natively To run the tests the following tools need to be installed: diff --git a/Rakefile b/Rakefile index 010e2030..ad2597a5 100644 --- a/Rakefile +++ b/Rakefile @@ -33,9 +33,6 @@ end.spec 'neo4j-ruby-driver' do dependency 'rspec-mocks', '>= 0', :dev dependency 'zeitwerk', '>= 2.1.10' - if Gem::Version.new(RUBY_VERSION) >= Gem::Version.new('3.3') - dependency "csv", "~> 3.0", :dev - end spec_extras[:require_paths] = ['lib', jruby? ? 'jruby' : 'ruby'] @@ -55,7 +52,10 @@ end.spec 'neo4j-ruby-driver' do dependency 'async', '>= 0' dependency 'async-io', '>= 0' dependency 'connection_pool', '>= 0' - dependency 'csv', '>= 0' + + if Gem::Version.new(RUBY_VERSION) >= Gem::Version.new('3.4') + dependency "csv", "~> 3.0" # CSV stdlib was moved in Ruby 3.4 to separate gem + end end end diff --git a/docker-compose.yml b/docker-compose.yml index 11910392..ab306f50 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -1,11 +1,10 @@ version: '3' services: - ruby: + ruby-driver: build: context: . args: - JAVA_VERSION=11 - volumes: - .:/app links: diff --git a/spec/integration/load_csv_spec.rb b/spec/integration/load_csv_spec.rb index 3636c9a9..e06edb09 100755 --- a/spec/integration/load_csv_spec.rb +++ b/spec/integration/load_csv_spec.rb @@ -1,6 +1,6 @@ # frozen_string_literal: true -if Gem::Version.new(RUBY_VERSION) <= Gem::Version.new('3.3') +if Gem::Version.new(RUBY_VERSION) >= Gem::Version.new('3.4') require 'csv' end diff --git a/spec/support/cluster_extension.rb b/spec/support/cluster_extension.rb index ace79803..c64c7e30 100644 --- a/spec/support/cluster_extension.rb +++ b/spec/support/cluster_extension.rb @@ -4,9 +4,9 @@ require 'neo4j/driver/util/cc/shared_cluster' RSpec.shared_context 'cluster_extension' do - USER = 'neo4j' - PASSWORD = 'password' - NEO4J_VERSION = ENV['NEO4J_VERSION'] || '4.4.26' + USER = ENV.fetch('TEST_NEO4J_USER', 'neo4j') + PASSWORD = ENV.fetch('TEST_NEO4J_PASS', 'password') + NEO4J_VERSION = ENV.fetch('NEO4J_VERSION', '4.4.26') CLUSTER_DIR = File.absolute_path("db/neo4j/test-cluster#{NEO4J_VERSION}") INITIAL_PORT = 20_000 diff --git a/spec/support/driver_helper.rb b/spec/support/driver_helper.rb index 9a8712d3..d07ac2ac 100644 --- a/spec/support/driver_helper.rb +++ b/spec/support/driver_helper.rb @@ -18,17 +18,11 @@ def basic_auth_token Neo4j::Driver::AuthTokens.basic(neo4j_user, neo4j_password) end - def neo4j_user - ENV.fetch('TEST_NEO4J_USER', 'neo4j') - end + def neo4j_user = ENV.fetch('TEST_NEO4J_USER', 'neo4j') - def neo4j_password - ENV.fetch('TEST_NEO4J_PASS', 'password') - end + def neo4j_password = ENV.fetch('TEST_NEO4J_PASS', 'password') - def database - ENV.fetch('TEST_NEO4J_DATABASE', 'neo4j') - end + def database = ENV.fetch('TEST_NEO4J_DATABASE', 'neo4j') def driver self.single_driver ||= Neo4j::Driver::GraphDatabase.driver( From e1fbf3a7ba325fb15b752820d6b94f70d05ac394 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Piotr=20G=C4=99bala?= Date: Thu, 20 Mar 2025 09:49:18 +0100 Subject: [PATCH 10/12] Add support for jruby driver docker container --- Dockerfile-jruby | 18 ++++++++++++++++ Dockerfile => Dockerfile-ruby | 3 ++- README.md | 8 ++++++-- docker-compose.yml | 34 +++++++++++++++++++++++-------- spec/integration/load_csv_spec.rb | 5 +---- 5 files changed, 52 insertions(+), 16 deletions(-) create mode 100644 Dockerfile-jruby rename Dockerfile => Dockerfile-ruby (99%) diff --git a/Dockerfile-jruby b/Dockerfile-jruby new file mode 100644 index 00000000..52d27eb0 --- /dev/null +++ b/Dockerfile-jruby @@ -0,0 +1,18 @@ +ARG JAVA_VERSION + +FROM jruby:9.4-jdk${JAVA_VERSION} + +ENV JAVA_VERSION=$JAVA_VERSION + +# Installing packages +RUN apt-get update && apt-get upgrade -y && apt-get install -y git python3-pip + +# Installing boltkit +RUN pip3 install --user git+https://github.com/klobuczek/boltkit@1.3#egg=boltkit +RUN echo "export PATH=/root/.local/bin:$PATH" >> ~/.bashrc + +WORKDIR /app +COPY . . +RUN ./bin/setup + +CMD ["bundle exec rspec spec"] diff --git a/Dockerfile b/Dockerfile-ruby similarity index 99% rename from Dockerfile rename to Dockerfile-ruby index 17e3b1dc..17013d7e 100644 --- a/Dockerfile +++ b/Dockerfile-ruby @@ -1,6 +1,7 @@ +ARG JAVA_VERSION + FROM ruby:3.4 -ARG JAVA_VERSION ENV JAVA_VERSION=$JAVA_VERSION # Adding Java package diff --git a/README.md b/README.md index 48b95ec5..85b5cfda 100644 --- a/README.md +++ b/README.md @@ -41,11 +41,16 @@ This gem includes 2 different implementations: java driver wrapper and pure ruby ## Testing with docker -The tests can be run with docker. +The tests can be run with docker: $ docker compose run ruby-driver bash $ bundle exec rspec spec +or for jruby + + $ docker compose run jruby-driver bash + $ bundle exec rspec spec + To test different versions of neo4j, set the environment variable `NEO4J_VERSION` to the version you want to test. Keep in mind to change JAVA_VERSION in the Dockerfile if you want to test with different java versions. @@ -90,4 +95,3 @@ Suggestions, improvements, bug reports and pull requests are welcome on GitHub a ## License The gem is available as open source under the terms of the [MIT License](https://opensource.org/licenses/MIT). - diff --git a/docker-compose.yml b/docker-compose.yml index ab306f50..6cb0b19f 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -1,22 +1,38 @@ version: '3' +x-environment: &environment + TEST_NEO4J_HOST: neo4j + TEST_NEO4J_PORT: 7687 + TEST_NEO4J_USER: neo4j + TEST_NEO4J_PASS: pass + TEST_NEO4J_SCHEME: bolt + TEST_NEO4J_DATABASE: neo4j + NEO4J_VERSION: 5.26.0 + services: ruby-driver: build: context: . - args: - - JAVA_VERSION=11 + dockerfile: Dockerfile-ruby + args: + JAVA_VERSION: 21 volumes: - .:/app links: - neo4j environment: - - TEST_NEO4J_HOST=neo4j - - TEST_NEO4J_PORT=7687 - - TEST_NEO4J_USER=neo4j - - TEST_NEO4J_PASS=pass - - TEST_NEO4J_SCHEME=bolt - - TEST_NEO4J_DATABASE=neo4j - - NEO4J_VERSION=4.4.5 + <<: *environment + jruby-driver: + build: + context: . + dockerfile: Dockerfile-jruby + args: + JAVA_VERSION: 21 + volumes: + - .:/app + links: + - neo4j + environment: + <<: *environment neo4j: image: neo4j:4.4.5-enterprise ports: diff --git a/spec/integration/load_csv_spec.rb b/spec/integration/load_csv_spec.rb index e06edb09..edfeefb6 100755 --- a/spec/integration/load_csv_spec.rb +++ b/spec/integration/load_csv_spec.rb @@ -1,9 +1,6 @@ # frozen_string_literal: true -if Gem::Version.new(RUBY_VERSION) >= Gem::Version.new('3.4') - require 'csv' -end - +require 'csv' require 'tempfile' RSpec.describe 'LoadCsv', csv: true do From a09e19f5abe1ded27d3826a8c64e96007bba1eda Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Piotr=20G=C4=99bala?= Date: Wed, 16 Apr 2025 10:54:56 +0200 Subject: [PATCH 11/12] Update Rakefile and docker compose --- Dockerfile-jruby | 3 ++- Dockerfile-ruby | 5 ++--- Rakefile | 2 +- docker-compose.yml | 4 ++-- 4 files changed, 7 insertions(+), 7 deletions(-) diff --git a/Dockerfile-jruby b/Dockerfile-jruby index 52d27eb0..e942e9c9 100644 --- a/Dockerfile-jruby +++ b/Dockerfile-jruby @@ -2,6 +2,7 @@ ARG JAVA_VERSION FROM jruby:9.4-jdk${JAVA_VERSION} +ARG JAVA_VERSION ENV JAVA_VERSION=$JAVA_VERSION # Installing packages @@ -11,7 +12,7 @@ RUN apt-get update && apt-get upgrade -y && apt-get install -y git python3-pip RUN pip3 install --user git+https://github.com/klobuczek/boltkit@1.3#egg=boltkit RUN echo "export PATH=/root/.local/bin:$PATH" >> ~/.bashrc -WORKDIR /app +WORKDIR /driver COPY . . RUN ./bin/setup diff --git a/Dockerfile-ruby b/Dockerfile-ruby index 17013d7e..8a58f333 100644 --- a/Dockerfile-ruby +++ b/Dockerfile-ruby @@ -1,7 +1,6 @@ -ARG JAVA_VERSION - FROM ruby:3.4 +ARG JAVA_VERSION ENV JAVA_VERSION=$JAVA_VERSION # Adding Java package @@ -17,7 +16,7 @@ RUN apt-get update && apt-get upgrade -y && apt-get install -y python3-pip temur RUN pip3 install --user git+https://github.com/klobuczek/boltkit@1.3#egg=boltkit --break-system-packages RUN echo "export PATH=/root/.local/bin:$PATH" >> ~/.bashrc -WORKDIR /app +WORKDIR /driver COPY . . RUN ./bin/setup diff --git a/Rakefile b/Rakefile index ad2597a5..4eae1ac5 100644 --- a/Rakefile +++ b/Rakefile @@ -49,7 +49,7 @@ end.spec 'neo4j-ruby-driver' do spec_extras[:requirements] = ->(requirements) { requirements << 'jar org.neo4j.driver, neo4j-java-driver-all, 5.27.0' } spec_extras[:platform] = 'java' else - dependency 'async', '>= 0' + dependency 'async', '>= 2.13' dependency 'async-io', '>= 0' dependency 'connection_pool', '>= 0' diff --git a/docker-compose.yml b/docker-compose.yml index 6cb0b19f..48fe9e8f 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -16,7 +16,7 @@ services: args: JAVA_VERSION: 21 volumes: - - .:/app + - .:/driver links: - neo4j environment: @@ -28,7 +28,7 @@ services: args: JAVA_VERSION: 21 volumes: - - .:/app + - .:/driver links: - neo4j environment: From d4549c92a988493b35a1bd566fcfcc316ef67817 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Piotr=20G=C4=99bala?= Date: Wed, 11 Jun 2025 10:26:32 +0200 Subject: [PATCH 12/12] Fix async version --- Rakefile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Rakefile b/Rakefile index 92d1d02c..5668f602 100644 --- a/Rakefile +++ b/Rakefile @@ -50,7 +50,7 @@ end.spec 'neo4j-ruby-driver' do spec_extras[:requirements] = ->(requirements) { requirements << 'jar org.neo4j.driver, neo4j-java-driver-all, 5.28.4' } spec_extras[:platform] = 'java' else - dependency 'async', '>= 2.13' + dependency 'async', ['>= 2.13', '< 2.24'] dependency 'async-io', '>= 0' dependency 'connection_pool', '>= 0'