From 760440cebfc4aaed700a7b5d2ea874810de56f4a Mon Sep 17 00:00:00 2001 From: Mark Lee Date: Mon, 27 Jun 2016 20:28:06 -0700 Subject: [PATCH 01/12] Move Rakefile towards a consistent code style --- Rakefile | 29 ++++++++++++++--------------- 1 file changed, 14 insertions(+), 15 deletions(-) diff --git a/Rakefile b/Rakefile index 059901a..70d8845 100644 --- a/Rakefile +++ b/Rakefile @@ -1,5 +1,5 @@ -require "bundler/gem_tasks" -require "rake/testtask" +require 'bundler/gem_tasks' +require 'rake/testtask' require 'fileutils' desc 'System Details' @@ -24,15 +24,15 @@ task :sysinfo do end end -desc "Build Rust extension" +desc 'Build Rust extension' task :build_src do - puts "Building extension..." - sh "cargo build --release" + puts 'Building extension...' + sh 'cargo build --release' end -desc "Clean up Rust build" +desc 'Clean up Rust build' task :clean_src do - puts "Cleaning up build..." + puts 'Cleaning up build...' # Remove all but library file FileUtils. rm_rf( @@ -44,23 +44,22 @@ task :clean_src do ) end -desc "Build + clean up Rust extension" +desc 'Build + clean up Rust extension' task build_lib: [:build_src, :clean_src] do - puts "Completed build!" + puts 'Completed build!' end -desc "Code Quality Check" +desc 'Code Quality Check' task :lint do puts - puts "Quality check starting..." - sh "rubocop" + puts 'Quality check starting...' + sh 'rubocop' puts end Rake::TestTask.new(minitest: :build_lib) do |t| - t.libs << "test" - t.libs << "lib" - t.test_files = FileList['test/**/*_test.rb'] + t.libs = %w(lib test) + t.pattern = 'test/**/*_test.rb' end task test: [:minitest, :lint] do |_t| From 9ca0fcab28266480cb25e48a050ce448771b5515 Mon Sep 17 00:00:00 2001 From: Mark Lee Date: Mon, 27 Jun 2016 22:35:33 -0700 Subject: [PATCH 02/12] Use Thermite to build/integrate the Rust+Ruby code --- .gitignore | 3 +++ .travis.yml | 2 +- Cargo.toml | 3 +++ Rakefile | 26 ++++---------------------- ext/Rakefile | 7 +++++++ ext/faster_path/extconf.rb | 19 ------------------- faster_path.gemspec | 3 ++- lib/faster_path.rb | 11 +++++++---- test/faster_path_test.rb | 8 +++++--- 9 files changed, 32 insertions(+), 50 deletions(-) create mode 100644 ext/Rakefile delete mode 100644 ext/faster_path/extconf.rb diff --git a/.gitignore b/.gitignore index 0ad8ea8..6f99e01 100644 --- a/.gitignore +++ b/.gitignore @@ -14,3 +14,6 @@ mkmf.log **/*.gem .idea /rubyspec_temp/ +*.dll +*.dylib +*.so diff --git a/.travis.yml b/.travis.yml index d6f3732..e236a4a 100644 --- a/.travis.yml +++ b/.travis.yml @@ -24,5 +24,5 @@ matrix: before_install: - gem install bundler -v 1.14.5 - curl -sSf https://static.rust-lang.org/rustup.sh | sudo sh -s -- --channel=nightly -- bundle && bundle exec rake build_src && rake clean_src +- bundle && bundle exec rake build_lib script: bundle exec rake test diff --git a/Cargo.toml b/Cargo.toml index a806724..2fca8a4 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -8,6 +8,9 @@ repository = "https://github.com/danielpclark/faster_path" license = "MIT OR Apache-2.0" readme = "README.md" +[package.metadata.thermite] +github_releases = true + [lib] name = "faster_path" crate-type = ["dylib"] diff --git a/Rakefile b/Rakefile index 70d8845..e52953f 100644 --- a/Rakefile +++ b/Rakefile @@ -1,6 +1,6 @@ require 'bundler/gem_tasks' require 'rake/testtask' -require 'fileutils' +require 'thermite/tasks' desc 'System Details' task :sysinfo do @@ -24,29 +24,11 @@ task :sysinfo do end end -desc 'Build Rust extension' -task :build_src do - puts 'Building extension...' - sh 'cargo build --release' -end - -desc 'Clean up Rust build' -task :clean_src do - puts 'Cleaning up build...' - # Remove all but library file - FileUtils. - rm_rf( - Dir. - glob('target/release/*'). - keep_if do |f| - !f[/\.(?:so|dll|dylib|deps)\z/] - end - ) -end +thermite = Thermite::Tasks.new desc 'Build + clean up Rust extension' -task build_lib: [:build_src, :clean_src] do - puts 'Completed build!' +task build_lib: 'thermite:build' do + thermite.run_cargo 'clean' end desc 'Code Quality Check' diff --git a/ext/Rakefile b/ext/Rakefile new file mode 100644 index 0000000..0872a5e --- /dev/null +++ b/ext/Rakefile @@ -0,0 +1,7 @@ +require 'thermite/tasks' + +project_toplevel_dir = File.dirname(File.dirname(__FILE__)) +Thermite::Tasks.new(cargo_project_path: project_toplevel_dir, + ruby_project_path: project_toplevel_dir) + +task default: 'thermite:build' diff --git a/ext/faster_path/extconf.rb b/ext/faster_path/extconf.rb deleted file mode 100644 index e190e33..0000000 --- a/ext/faster_path/extconf.rb +++ /dev/null @@ -1,19 +0,0 @@ -require 'mkmf' - -have_header('Dummy Makefile') - -unless find_executable('cargo') - puts "You need to have Rust installed for this gem to build natively." - puts "Please install the latest nightly build:" - puts - puts "curl -sSf https://static.rust-lang.org/rustup.sh | sudo sh -s -- --channel=nightly" - puts - at_exit { puts "Exiting..."} -end - -Dir.chdir(File.expand_path("../../", File.dirname(__FILE__))) do - `rake build_src` - `rake clean_src` -end - -create_makefile('faster_path/dummy') diff --git a/faster_path.gemspec b/faster_path.gemspec index 0d3a89b..eaf6b4c 100644 --- a/faster_path.gemspec +++ b/faster_path.gemspec @@ -21,12 +21,13 @@ Gem::Specification.new do |spec| spec.files += Dir['lib/**/*'] spec.files += Dir['src/**/*'] - spec.extensions << "ext/faster_path/extconf.rb" + spec.extensions = ["ext/Rakefile"] spec.require_paths = ["lib"] spec.add_dependency "bundler", "~> 1.12" spec.add_dependency "rake", "~> 12.0" spec.add_dependency "ffi", "~> 1.9" + spec.add_dependency "thermite", "~> 0.11.0" spec.add_development_dependency "method_source", "~> 0.8.2" spec.add_development_dependency "minitest", "~> 5.10" spec.add_development_dependency "minitest-reporters", "~> 1.1" diff --git a/lib/faster_path.rb b/lib/faster_path.rb index 6f4cea2..cdd2e01 100644 --- a/lib/faster_path.rb +++ b/lib/faster_path.rb @@ -1,7 +1,8 @@ -require "faster_path/version" +require 'faster_path/version' +require 'ffi' require 'pathname' -require "ffi" require 'faster_path/asset_resolution' +require 'thermite/config' module FasterPath def self.rust_arch_bits @@ -73,8 +74,10 @@ def self.entries(pth) module Rust extend FFI::Library ffi_lib begin - prefix = Gem.win_platform? ? "" : "lib" - "#{File.expand_path("../target/release/", __dir__)}/#{prefix}faster_path.#{FFI::Platform::LIBSUFFIX}" + toplevel_dir = File.dirname(File.dirname(__FILE__)) + config = Thermite::Config.new(cargo_project_path: toplevel_dir, + ruby_project_path: toplevel_dir) + config.ruby_extension_path end class FromRustArray < FFI::Struct diff --git a/test/faster_path_test.rb b/test/faster_path_test.rb index a08959f..ebaba5e 100644 --- a/test/faster_path_test.rb +++ b/test/faster_path_test.rb @@ -1,11 +1,13 @@ require 'test_helper' -require 'ffi' +require 'thermite/config' class FasterPathTest < Minitest::Test def test_it_build_linked_library assert File.exist? begin - prefix = Gem.win_platform? ? "" : "lib" - "#{File.expand_path("../target/release/", File.dirname(__FILE__))}/#{prefix}faster_path.#{FFI::Platform::LIBSUFFIX}" + toplevel_dir = File.dirname(File.dirname(__FILE__)) + config = Thermite::Config.new(cargo_project_path: toplevel_dir, + ruby_project_path: toplevel_dir) + config.ruby_extension_path end end end From 96534e39f89ca47fb99aa71b2daa1e4789f3aab2 Mon Sep 17 00:00:00 2001 From: Mark Lee Date: Sun, 5 Mar 2017 17:43:50 -0800 Subject: [PATCH 03/12] Fix gem filelist --- faster_path.gemspec | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/faster_path.gemspec b/faster_path.gemspec index eaf6b4c..229304b 100644 --- a/faster_path.gemspec +++ b/faster_path.gemspec @@ -16,7 +16,7 @@ Gem::Specification.new do |spec| spec.files = [ "Cargo.lock", "Cargo.toml", "Gemfile", "MIT-LICENSE.txt", "README.md", "Rakefile", "bin/console", "bin/setup", - "ext/faster_path/extconf.rb", "faster_path.gemspec" + "ext/Rakefile", "faster_path.gemspec" ] spec.files += Dir['lib/**/*'] spec.files += Dir['src/**/*'] From f69f58c2e8c5d0c86a9710ddafb10f97b8489467 Mon Sep 17 00:00:00 2001 From: Mark Lee Date: Sun, 5 Mar 2017 17:44:15 -0800 Subject: [PATCH 04/12] Use Thermite in AssetResolution --- lib/faster_path/asset_resolution.rb | 14 ++++++++------ 1 file changed, 8 insertions(+), 6 deletions(-) diff --git a/lib/faster_path/asset_resolution.rb b/lib/faster_path/asset_resolution.rb index 5060f3f..ecf798e 100644 --- a/lib/faster_path/asset_resolution.rb +++ b/lib/faster_path/asset_resolution.rb @@ -2,6 +2,8 @@ # If the asset is not available and we can't compile it from this code then FAIL # on require of 'faster_path' with a very clear message as to why." +require 'thermite/config' + module FasterPath module AssetResolution # BREAK IN CASE OF EMERGENCY ;-) class << self @@ -45,13 +47,13 @@ def file? File.exist? lib_file end - def lib_dir - File.expand_path("../../target/release/", __dir__) - end - def lib_file - prefix = Gem.win_platform? ? "" : "lib" - "#{lib_dir}/#{prefix}faster_path.#{FFI::Platform::LIBSUFFIX}" + @lib_file ||= begin + toplevel_dir = File.dirname(File.dirname(File.dirname(__FILE__))) + config = Thermite::Config.new(cargo_project_path: toplevel_dir, + ruby_project_path: toplevel_dir) + config.ruby_extension_path + end end end end From bd321ef0316b58a8a3033c52b31892e3242628d4 Mon Sep 17 00:00:00 2001 From: Mark Lee Date: Sun, 5 Mar 2017 17:59:32 -0800 Subject: [PATCH 05/12] Don't run rubocop on the binary extension --- .rubocop.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.rubocop.yml b/.rubocop.yml index 2b7b15c..e17b25f 100644 --- a/.rubocop.yml +++ b/.rubocop.yml @@ -2,7 +2,7 @@ AllCops: Include: - 'Gemfile' - 'Rakefile' - - 'lib/**/*' + - 'lib/**/*.rb' - '*.gemspec' Exclude: - 'assets/**/*' From 141656feb2500fa6e028aa20c6a667c011c15ab6 Mon Sep 17 00:00:00 2001 From: Mark Lee Date: Sun, 5 Mar 2017 18:06:43 -0800 Subject: [PATCH 06/12] Cleanup Travis config * use explicit Ruby version numbers * bundler cache works with Ruby, Cargo cache needs to be explicit * build using stable Rust --- .travis.yml | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/.travis.yml b/.travis.yml index e236a4a..15add7e 100644 --- a/.travis.yml +++ b/.travis.yml @@ -1,16 +1,19 @@ -sudo: true +sudo: false language: ruby os: - linux - osx cache: -- bundler -- cargo + bundler: true + directories: + - $HOME/.cargo + - $TRAVIS_BUILD_DIR/target rvm: -- 2.2 -- 2.3 +- 2.2.5 +- 2.3.3 env: global: + - PATH=$PATH:$HOME/.cargo/bin - secure: UCarEfq9wDpD6FV0dIdfDMCWfeLoKBAM2PS+xZ82K1uoFBMtwet/UuEuz06OnX6B9k2TwV0aqQpkUuo6o+h9YoHKAGz1/O5iB5uJaHcoII8yL43LH4YUADqupsgbvFzUCdcLuKCvDVG5RD96tt5XX87UdyZMgHvBV41wKOoUF+0ZyIWq8sKFPlItM+oYN55gY+PZ5ZadsOOkWDbTAG/LuxDi1GJxb/ObiYkjk4b93xzKEx1t7H2LSs8/f8dg0w1gnM6bVXQHjdXGuAw8jqy6IoszFh2oKDyttix4yB5l5xxj/NwO/aJNmOLBRNf611WskH6RLKWteCxwyY0gIZnDlC7q+SMYJtDapuffvqqKdlC5ECcVNimw9D3DwuxizP/5IGoC5+X+RIJiWBx/RJgFV2dw22/XvC62rOMttQL1K1dUByMRJL1pjLoauofbTdJgZgdrb1eDxGNyxL+Rg8za2wqs5NtENnXY6RIX4NvSXUPE9vRLdYnmGtH5hLF36hRh5AwvgOZ544xYT2ss6FxUJNo/zphlE7zfZrD+waeUBRUabzi6S5xEBXainj01UjtfVXRDtcjV9vbh5pYYjZsX8lLZAdW8OZeKxhaOv7zQyUtAwMHE/sGfKj1yQSDh2fscY48mepV7xUPVE7jRgUDk1ayt2a+WeGE2DCR3KBv5gkk= matrix: - NO_ENV_VARS=USED @@ -22,7 +25,4 @@ matrix: - env: WITH_REGRESSION=true - env: TEST_MONKEYPATCHES=true WITH_REGRESSION=true before_install: -- gem install bundler -v 1.14.5 -- curl -sSf https://static.rust-lang.org/rustup.sh | sudo sh -s -- --channel=nightly -- bundle && bundle exec rake build_lib -script: bundle exec rake test +- curl -sSf https://sh.rustup.rs | sh -s -- -y --default-toolchain stable From 4f2d77a21d717dd1ea8b685367beb54fcfb01d9f Mon Sep 17 00:00:00 2001 From: "Daniel P. Clark" <6ftdan@gmail.com> Date: Sat, 3 Mar 2018 17:57:51 -0500 Subject: [PATCH 07/12] rm files no longer in master --- lib/faster_path/asset_resolution.rb | 61 ----------------------------- test/faster_path_test.rb | 13 ------ 2 files changed, 74 deletions(-) delete mode 100644 lib/faster_path/asset_resolution.rb delete mode 100644 test/faster_path_test.rb diff --git a/lib/faster_path/asset_resolution.rb b/lib/faster_path/asset_resolution.rb deleted file mode 100644 index ecf798e..0000000 --- a/lib/faster_path/asset_resolution.rb +++ /dev/null @@ -1,61 +0,0 @@ -# This is a redundancy check for the rust compiled library needed for this gem. -# If the asset is not available and we can't compile it from this code then FAIL -# on require of 'faster_path' with a very clear message as to why." - -require 'thermite/config' - -module FasterPath - module AssetResolution # BREAK IN CASE OF EMERGENCY ;-) - class << self - def verify! - return lib_file if file? - - if rust? - compile! - raise "Rust failed to compile asset! The dynamic library for this package was not found." unless file? - return lib_file - end - - raise "The dynamic library for this package was not found nor was Rust's cargo executable found. This package will not work without it!" - end - - private - - def compile! - require 'open3' - Dir.chdir(File.expand_path('../../', __dir__)) do - Open3.popen3("rake build_lib") do |stdin, stdout, stderr, wait_thr| - stdin.close - - wait_thr && wait_thr.value.exitstatus - out = Thread.new { stdout.read }.value.strip - Thread.new { stderr.read }.value - out - end - end - File.exist? lib_file - end - - def rust? - require 'mkmf' - MakeMakefile::Logging.instance_variable_set(:@log, File.open(File::NULL, 'w')) - MakeMakefile.instance_eval "undef :message; def message(*); end" - MakeMakefile.find_executable('cargo') - end - - def file? - File.exist? lib_file - end - - def lib_file - @lib_file ||= begin - toplevel_dir = File.dirname(File.dirname(File.dirname(__FILE__))) - config = Thermite::Config.new(cargo_project_path: toplevel_dir, - ruby_project_path: toplevel_dir) - config.ruby_extension_path - end - end - end - end -end -FasterPath::AssetResolution.verify! unless ENV['TEST'] diff --git a/test/faster_path_test.rb b/test/faster_path_test.rb deleted file mode 100644 index ebaba5e..0000000 --- a/test/faster_path_test.rb +++ /dev/null @@ -1,13 +0,0 @@ -require 'test_helper' -require 'thermite/config' - -class FasterPathTest < Minitest::Test - def test_it_build_linked_library - assert File.exist? begin - toplevel_dir = File.dirname(File.dirname(__FILE__)) - config = Thermite::Config.new(cargo_project_path: toplevel_dir, - ruby_project_path: toplevel_dir) - config.ruby_extension_path - end - end -end From 34997f73ff72b8cfa41a782f9da0526c23c1f53f Mon Sep 17 00:00:00 2001 From: "Daniel P. Clark" <6ftdan@gmail.com> Date: Sat, 3 Mar 2018 18:20:04 -0500 Subject: [PATCH 08/12] Merge master --- lib/faster_path.rb | 1 - 1 file changed, 1 deletion(-) diff --git a/lib/faster_path.rb b/lib/faster_path.rb index 4b0b830..ddc3b6d 100644 --- a/lib/faster_path.rb +++ b/lib/faster_path.rb @@ -1,5 +1,4 @@ require 'faster_path/version' -require 'ffi' require 'pathname' require 'thermite/config' require 'faster_path/platform' From 72552bc1ec430668b417d817ea45091738647077 Mon Sep 17 00:00:00 2001 From: "Daniel P. Clark" <6ftdan@gmail.com> Date: Sat, 3 Mar 2018 18:37:06 -0500 Subject: [PATCH 09/12] FFI library path --- lib/faster_path.rb | 8 +++-- lib/faster_path/platform.rb | 60 ------------------------------------- 2 files changed, 6 insertions(+), 62 deletions(-) delete mode 100644 lib/faster_path/platform.rb diff --git a/lib/faster_path.rb b/lib/faster_path.rb index ddc3b6d..4bf8ed2 100644 --- a/lib/faster_path.rb +++ b/lib/faster_path.rb @@ -1,12 +1,16 @@ require 'faster_path/version' require 'pathname' require 'thermite/config' -require 'faster_path/platform' require 'fiddle' require 'fiddle/import' module FasterPath - FFI_LIBRARY = FasterPath::Platform.ffi_library() + FFI_LIBRARY = begin + toplevel_dir = File.dirname(__dir__) + config = Thermite::Config.new(cargo_project_path: toplevel_dir, + ruby_project_path: toplevel_dir) + config.ruby_extension_path + end Fiddle::Function. new(Fiddle.dlopen(FFI_LIBRARY)['Init_faster_pathname'], [], Fiddle::TYPE_VOIDP). diff --git a/lib/faster_path/platform.rb b/lib/faster_path/platform.rb deleted file mode 100644 index f67243a..0000000 --- a/lib/faster_path/platform.rb +++ /dev/null @@ -1,60 +0,0 @@ -module FasterPath - module Platform - class << self - def ffi_library - file = [ - lib_prefix, - "faster_path.", - lib_suffix - ] - - File.join(rust_release, file.join()) - end - - def operating_system - case host_os() - when /linux|bsd|solaris/ - "linux" - when /darwin/ - "darwin" - when /mingw|mswin/ - "windows" - else - host_os() - end - end - - def lib_prefix - case operating_system() - when /windows/ - '' - when /cygwin/ - 'cyg' - else - 'lib' - end - end - - def lib_suffix - case operating_system() - when /darwin/ - 'dylib' - when /linux/ - 'so' - when /windows|cygwin/ - 'dll' - else - 'so' - end - end - - def rust_release - File.expand_path("../../target/release/", __dir__) - end - - def host_os - RbConfig::CONFIG['host_os'].downcase - end - end - end -end From 3386eee961242028abc65a5a7123d2b0cab71644 Mon Sep 17 00:00:00 2001 From: "Daniel P. Clark" <6ftdan@gmail.com> Date: Sat, 3 Mar 2018 19:35:08 -0500 Subject: [PATCH 10/12] Github releases --- .travis.yml | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/.travis.yml b/.travis.yml index ab35172..077aeb2 100644 --- a/.travis.yml +++ b/.travis.yml @@ -25,3 +25,14 @@ matrix: - env: RUST_BACKTRACE=1 ENCODING=true TEST_MONKEYPATCHES=true WITH_REGRESSION=true before_install: - curl -sSf https://sh.rustup.rs | sh -s -- -y --default-toolchain stable +deploy: + provider: releases + api_key: + secure: wflOVYn4aAkhM1LlpqFnUpw7YPrTOumNnfUiQETTBMgOY2IYYPHFo5wgCWeW7/O2galmNFJCVlFQ3GYnepV2GdLyNM8uRl+13XA9V6wE6qCP6NmskxXwR09Nonx8PrdtnuQJvAg5DgSsP5aciWf9bM6xwmspzebJx44s2jiir6ODKNAoGxG+xV6ZT9FVDHNoVgDePTYry8nPLt5XewR8D8CBL3Np//laR4y08hHajGOZXHimJYG+PXoHadZaaIqnlLHkZ9TLkT1q3LCyMa5So3/NmNSIKA01QQA0625XOfSK1ZnhFx7XgPR7eKNzD930x/FP6G46RUMBDh2mG7NgaGeMWerJgfg5rBm0o5eBH92lDpOw8ew47l5bcrPLiMeokE38uPnxUK1/+z7Y4YmamHvwaY48H88JXmmmS2LlxkoeVdFqbgMjdclORF+ktx7FIHGzhkbuPoTSLCs6feKjk3J24Nn/plHbEsYAOVTClPbzawA8JnPJp3lmXHTVhgi0rVBoUYcZs+8m998/Sr5OfYJZl47f6sr2VnenUwSjX8ylLcKRbyOl7y23AMxAbRUomrcDceTjj0fcsUppZZBXPM/6cpjVlQlTyVOhgL/2qhZaAMZ3OtG4ittazfvF0+xclRkfshc1bnqZ5PmmBG6OMtEk072nLwHTVwr0n8ZTxXw= + file: faster_path-*.tar.gz + file_glob: true + skip_cleanup: true + on: + condition: -z ${TEST_MONKEYPATCHES} + repo: danielpclark/faster_path + tags: true From d5eed2cbff929ac212e20a63901fc7ee68ffd311 Mon Sep 17 00:00:00 2001 From: "Daniel P. Clark" <6ftdan@gmail.com> Date: Sat, 3 Mar 2018 19:42:18 -0500 Subject: [PATCH 11/12] Rust nightly required for TryFrom --- .travis.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.travis.yml b/.travis.yml index 077aeb2..683913d 100644 --- a/.travis.yml +++ b/.travis.yml @@ -24,7 +24,7 @@ matrix: allow_failures: - env: RUST_BACKTRACE=1 ENCODING=true TEST_MONKEYPATCHES=true WITH_REGRESSION=true before_install: -- curl -sSf https://sh.rustup.rs | sh -s -- -y --default-toolchain stable +- curl -sSf https://sh.rustup.rs | sh -s -- -y --default-toolchain nightly deploy: provider: releases api_key: From bf92df21f5fa5e59af586004ecb1450558f684aa Mon Sep 17 00:00:00 2001 From: "Daniel P. Clark" <6ftdan@gmail.com> Date: Sat, 3 Mar 2018 20:04:38 -0500 Subject: [PATCH 12/12] Version bump --- lib/faster_path/version.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/faster_path/version.rb b/lib/faster_path/version.rb index aa14eae..8a7982e 100644 --- a/lib/faster_path/version.rb +++ b/lib/faster_path/version.rb @@ -1,3 +1,3 @@ module FasterPath - VERSION = "0.2.6" + VERSION = "0.3.0" end