From a8132421bc34343f7e6e9f296cb1455c5b754262 Mon Sep 17 00:00:00 2001 From: Caius Durling Date: Mon, 13 Aug 2012 23:14:26 +0100 Subject: [PATCH 1/2] Use a gemspec, Gemfile & other standard stuff --- .gitignore | 1 + Gemfile | 3 +++ Rakefile | 24 +++++------------------- cuuid.gemspec | 15 +++++++++++++++ 4 files changed, 24 insertions(+), 19 deletions(-) create mode 100644 Gemfile create mode 100644 cuuid.gemspec diff --git a/.gitignore b/.gitignore index 565aa08..7f76c39 100644 --- a/.gitignore +++ b/.gitignore @@ -5,3 +5,4 @@ pkg tmp .DS_Store Makefile +Gemfile.lock diff --git a/Gemfile b/Gemfile new file mode 100644 index 0000000..a1b93f3 --- /dev/null +++ b/Gemfile @@ -0,0 +1,3 @@ +source :rubygems + +gemspec diff --git a/Rakefile b/Rakefile index 00a9ac6..4f2a55a 100644 --- a/Rakefile +++ b/Rakefile @@ -1,21 +1,7 @@ -require "rake/extensiontask" -require "rubygems/package_task" - -spec = Gem::Specification.new do |s| - s.name = "cuuid" - s.version = "0.3.1" - s.author = "Caius Durling" - s.email = "caius@emberads.com" - s.homepage = "http://github.com/EmberAds/cuuid" - s.platform = Gem::Platform::RUBY - s.summary = "Ruby wrapper for the uuid library in your OS." - s.files = FileList["ext/**/*", "lib/**/*.rb", "[A-Z]*"].to_a - s.extensions = FileList["ext/**/extconf.rb"] - - s.add_development_dependency "rake-compiler" - s.add_development_dependency "rspec" - s.has_rdoc = false -end +spec = Gem::Specification.load("cuuid.gemspec") +require "rubygems/package_task" Gem::PackageTask.new(spec) {} -Rake::ExtensionTask.new('cuuid', spec) + +require "rake/extensiontask" +Rake::ExtensionTask.new("cuuid", spec) diff --git a/cuuid.gemspec b/cuuid.gemspec new file mode 100644 index 0000000..6228c59 --- /dev/null +++ b/cuuid.gemspec @@ -0,0 +1,15 @@ +Gem::Specification.new do |s| + s.name = "cuuid" + s.version = "0.3.1" + s.author = "Caius Durling" + s.email = "caius@emberads.com" + s.homepage = "http://github.com/EmberAds/cuuid" + s.platform = Gem::Platform::RUBY + s.summary = "Ruby wrapper for the uuid library in your OS." + s.files = Dir["ext/**/*", "lib/**/*.rb", "[A-Z]*"].to_a + s.extensions = Dir["ext/**/extconf.rb"] + + s.add_development_dependency "rake-compiler" + s.add_development_dependency "rspec" + s.has_rdoc = false +end From 6d3f58ec881d0608a81194180eed8eb60fe97756 Mon Sep 17 00:00:00 2001 From: Caius Durling Date: Mon, 13 Aug 2012 23:15:07 +0100 Subject: [PATCH 2/2] Add CUUID::Generator.generate to do the actual work --- Rakefile | 2 +- ext/cuuid/cuuid.c | 31 --------------------------- ext/cuuid/extconf.rb | 5 ----- ext/cuuid_generator/cuuid_generator.c | 31 +++++++++++++++++++++++++++ ext/cuuid_generator/extconf.rb | 5 +++++ lib/cuuid.rb | 9 ++++++++ 6 files changed, 46 insertions(+), 37 deletions(-) delete mode 100644 ext/cuuid/cuuid.c delete mode 100644 ext/cuuid/extconf.rb create mode 100644 ext/cuuid_generator/cuuid_generator.c create mode 100644 ext/cuuid_generator/extconf.rb create mode 100644 lib/cuuid.rb diff --git a/Rakefile b/Rakefile index 4f2a55a..dabd69c 100644 --- a/Rakefile +++ b/Rakefile @@ -4,4 +4,4 @@ require "rubygems/package_task" Gem::PackageTask.new(spec) {} require "rake/extensiontask" -Rake::ExtensionTask.new("cuuid", spec) +Rake::ExtensionTask.new("cuuid_generator", spec) diff --git a/ext/cuuid/cuuid.c b/ext/cuuid/cuuid.c deleted file mode 100644 index 17fda35..0000000 --- a/ext/cuuid/cuuid.c +++ /dev/null @@ -1,31 +0,0 @@ -#include -#include - -// Define our module constant -VALUE CUUID = Qnil; - -// Prototype this -void Init_cuuid(); - -// Prototype CUUID.generate -static VALUE method_generate(); - -// Define CUUID and the fact it has a class method called generate -void Init_cuuid() { - int arg_count = 0; - CUUID = rb_define_module("CUUID"); - rb_define_module_function(CUUID, "generate", method_generate, arg_count); -} - -// Implement CUUID.generate -static VALUE method_generate(VALUE self) { - uuid_t uuid_id; - char uuid_str[128]; - - // Generate UUID and grab string version of it - uuid_generate(uuid_id); - uuid_unparse(uuid_id, uuid_str); - - // Cast it into a ruby string and return it - return rb_str_new2(uuid_str); -} diff --git a/ext/cuuid/extconf.rb b/ext/cuuid/extconf.rb deleted file mode 100644 index 7ee8e3e..0000000 --- a/ext/cuuid/extconf.rb +++ /dev/null @@ -1,5 +0,0 @@ -require 'mkmf' - -dir_config("cuuid") -have_library("uuid") if RUBY_PLATFORM[/linux/i] -create_makefile("cuuid") diff --git a/ext/cuuid_generator/cuuid_generator.c b/ext/cuuid_generator/cuuid_generator.c new file mode 100644 index 0000000..7c75faa --- /dev/null +++ b/ext/cuuid_generator/cuuid_generator.c @@ -0,0 +1,31 @@ +#include +#include + +// CUUID::Generator.generate + +// Define our module & class constants +VALUE CUUID = Qnil; +VALUE CUUIDGenerator = Qnil; + +void Init_cuuid_generator(); +static VALUE method_cuuid_generator_generate(VALUE self); + +// Define CUUID, CUUID::Generator and the class method +void Init_cuuid_generator() { + CUUID = rb_define_module("CUUID"); + CUUIDGenerator = rb_define_module_under(CUUID, "Generator"); + rb_define_singleton_method(CUUIDGenerator, "generate", method_cuuid_generator_generate, 0); +} + +// Implement CUUID.generate +static VALUE method_cuuid_generator_generate(VALUE self) { + uuid_t uuid_id; + char uuid_str[128]; + + // Generate UUID and grab string version of it + uuid_generate(uuid_id); + uuid_unparse(uuid_id, uuid_str); + + // Cast it into a ruby string and return it + return rb_str_new2(uuid_str); +} diff --git a/ext/cuuid_generator/extconf.rb b/ext/cuuid_generator/extconf.rb new file mode 100644 index 0000000..ec560ed --- /dev/null +++ b/ext/cuuid_generator/extconf.rb @@ -0,0 +1,5 @@ +require 'mkmf' + +dir_config("cuuid_generator") +have_library("uuid") if RUBY_PLATFORM[/linux/i] +create_makefile("cuuid_generator") diff --git a/lib/cuuid.rb b/lib/cuuid.rb new file mode 100644 index 0000000..11dec0d --- /dev/null +++ b/lib/cuuid.rb @@ -0,0 +1,9 @@ +require File.expand_path("cuuid_generator", File.dirname(__FILE__)) + +module CUUID + + # backwards compatible (& lazy) + def self.generate + Generator.generate + end +end