diff --git a/bin/periodicity b/bin/periodicity index 1bf1b67..2c591de 100755 --- a/bin/periodicity +++ b/bin/periodicity @@ -1,7 +1,15 @@ #!/usr/bin/env ruby -require 'rails' -require File.expand_path("config/environment.rb") -::Rails.application.eager_load! +$LOAD_PATH.unshift File.expand_path("../../lib", __FILE__) -logger.info "Running in #{RUBY_DESCRIPTION}" +require "periodicity/cli" + +begin + cli = Periodicity::CLI.instance + cli.run +rescue => e + raise e if $DEBUG + STDERR.puts e.message + STDERR.puts e.backtrace.join("\n") + exit 1 +end diff --git a/lib/periodicity.rb b/lib/periodicity.rb index 0351704..dd8e7a9 100644 --- a/lib/periodicity.rb +++ b/lib/periodicity.rb @@ -7,4 +7,3 @@ require "periodicity/period.rb" require "periodicity/config.rb" require 'periodicity/extensions/active_job' require "periodicity/rails.rb" if defined?(::Rails::Engine) -require "periodicity/cli.rb" diff --git a/lib/periodicity/cli.rb b/lib/periodicity/cli.rb index be6bd86..2a61d28 100644 --- a/lib/periodicity/cli.rb +++ b/lib/periodicity/cli.rb @@ -1,5 +1,23 @@ +require 'periodicity' + module Periodicity - class Cli - + class CLI + include Singleton + + def run + load_rails + print_banner + end + + def print_banner + puts "Loading Periodicity #{Periodicity::VERSION}" + puts "Running in #{RUBY_DESCRIPTION}" + end + + def load_rails + require 'rails' + require File.expand_path("config/environment.rb") + ::Rails.application.eager_load! + end end end diff --git a/spec/cli_spec.rb b/spec/cli_spec.rb new file mode 100644 index 0000000..af2505d --- /dev/null +++ b/spec/cli_spec.rb @@ -0,0 +1,13 @@ +require "spec_helper" +require 'periodicity/cli' + +describe Periodicity::CLI do + let(:cli) { Periodicity::CLI.instance } + + describe "#run" do + it "should try to initialize rails with #load_rails" do + expect(cli).to receive(:load_rails) + cli.run + end + end +end