grape-activerecord 2.0.0 → 2.1.0.pre.rc1

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 27a4153d9aa6bac32066254f76353d8608d5637d
4
- data.tar.gz: 2d83a5e15433ca0ad19d360caa99b6150bb2f50e
3
+ metadata.gz: 52fae3b0b15766403ba80d6a74c9bff1bac315b9
4
+ data.tar.gz: 0f6f09e48b8bf41bb6b68adc37e04879bb6b528a
5
5
  SHA512:
6
- metadata.gz: 73c43881ff83cc9cdf96a171b3f1f3de3b156c739eac11f0405d1af12959b0cbdfe3f26e0d2a36a352285dc6f408a8ae3e2f19ddcc7d3c4892b6122e904e7c59
7
- data.tar.gz: 5ba35e8d13f810a4ccf2aeec5184e67ab371ffc26b51b36d27873558241f2e6106adadcfd64f3253f21767dbecfd24021cd2de4f530df2bf1ab1aa781aa985bd
6
+ metadata.gz: 05b77a6c52a9cf15497d2f2e591475c0d54d1b03260d74d68d264970fa968cf00bfa4f58d2b23984a83c6d8031f134a7a985c8c6bc51c98746a9f3bd15713f00
7
+ data.tar.gz: 5c89319bc465ba39fab414d1cae69fcf30398057eb4b4a6717953cb4805d00d5838d18cf5fbc2856885c16837aa4ecb11c81e6442877dc6548eaa66affabbac5
data/README.md CHANGED
@@ -1,6 +1,9 @@
1
1
  # grape-activerecord
2
2
 
3
- A simple way to use ActiveRecord with your Grape apps. The defaults are all very Railsy (`config/database.yml`, `db/seeds.rb`, `db/migrate`, etc.), but you can easily change them.
3
+ A simple way to use ActiveRecord with your Grape apps. The defaults are all very Railsy (`config/database.yml`, `db/seeds.rb`, `db/migrate`, etc.), but you can easily change them. Supports:
4
+
5
+ * ActiveRecord 4
6
+ * ActiveRecord 5 (new, possibly buggy; please submit a PR if you find something!)
4
7
 
5
8
  ## How to use
6
9
 
@@ -16,6 +19,9 @@ After loading your gems, tell `Grape::ActiveRecord` about your database config u
16
19
  Grape::ActiveRecord.configure_from_url! ENV['DATABASE_URL'] # e.g. postgres://user:pass@host/db
17
20
  Grape::ActiveRecord.configure_from_hash!(adapter: "postgresql", host: "localhost", database: "db", username: "user", password: "pass", encoding: "utf8", pool: 10, timeout: 5000)
18
21
 
22
+ **Important note**: `configure_from_file!` won't work as expected if you have already `DATABASE_URL` set as part of your environment variables.
23
+ This is because in ActiveRecord when that env variable is set it will merge its properties into the current connection configuration.
24
+
19
25
  #### 3. Enable ActiveRecord connection management
20
26
 
21
27
  This ActiveRecord middleware cleans up your database connections after each request. Add it to your `config.ru` file:
@@ -27,7 +33,7 @@ This ActiveRecord middleware cleans up your database connections after each requ
27
33
  This will give you most of the standard `db:` tasks you get in Rails. Add it to your `Rakefile`.
28
34
 
29
35
  require "bundler/setup"
30
- require "grape/activerecord/rake"
36
+ load "tasks/grape-activerecord.rake"
31
37
 
32
38
  namespace :db do
33
39
  # Some db tasks require your app code to be loaded, or at least your gems
@@ -1,3 +1,5 @@
1
+ require 'erb'
2
+
1
3
  # Grape and ActiveRecord integration
2
4
  module Grape
3
5
  # Grape and ActiveRecord integration
@@ -11,6 +13,8 @@ module Grape
11
13
  attr_accessor :fixtures_path
12
14
  # Name of the seeds file in db_dir
13
15
  attr_accessor :seed_file
16
+ # Internal compatibility layer across different major versions of AR
17
+ attr_accessor :_normalizer
14
18
  end
15
19
 
16
20
  # Connect to database with a Hash. Example:
@@ -0,0 +1,30 @@
1
+ module Grape
2
+ module ActiveRecord
3
+ # Compatibility layer for ActiveRecord 4
4
+ class Compatibility4
5
+ attr_reader :major_version
6
+
7
+ # Compatibility layer for ActiveRecord 4
8
+ def initialize
9
+ @major_version = 4
10
+ ::ActiveRecord::Base.default_timezone = :utc
11
+ ::ActiveRecord::Base.logger = Logger.new(STDOUT)
12
+ end
13
+
14
+ # All db migration dir paths
15
+ def migrations_paths
16
+ ::ActiveRecord::Migrator.migrations_paths
17
+ end
18
+
19
+ # The dir in which to put new migrations
20
+ def migrations_path
21
+ ::ActiveRecord::Migrator.migrations_path
22
+ end
23
+
24
+ # Basename of migration classes
25
+ def migration_base_class_name
26
+ 'ActiveRecord::Migration'
27
+ end
28
+ end
29
+ end
30
+ end
@@ -0,0 +1,30 @@
1
+ module Grape
2
+ module ActiveRecord
3
+ # Compatibility layer for ActiveRecord 5
4
+ class Compatibility5
5
+ attr_reader :major_version
6
+
7
+ # Compatibility layer for ActiveRecord 5
8
+ def initialize
9
+ @major_version = 5
10
+ ::ActiveRecord::Base.default_timezone = :utc
11
+ ::ActiveRecord::Base.logger = Logger.new(STDOUT)
12
+ end
13
+
14
+ # All db migration dir paths
15
+ def migrations_paths
16
+ ::ActiveRecord::Migrator.migrations_paths
17
+ end
18
+
19
+ # The dir in which to put new migrations
20
+ def migrations_path
21
+ ::ActiveRecord::Migrator.migrations_paths[0]
22
+ end
23
+
24
+ # Basename of migration classes
25
+ def migration_base_class_name
26
+ 'ActiveRecord::Migration[5.0]'
27
+ end
28
+ end
29
+ end
30
+ end
@@ -1,7 +1,8 @@
1
- ::ActiveRecord::Base.default_timezone = :utc
2
- ::ActiveRecord::Base.logger = Logger.new(STDOUT)
3
-
4
1
  Grape::ActiveRecord.db_dir = 'db'
5
2
  Grape::ActiveRecord.migrations_paths = %w(db/migrate)
6
3
  Grape::ActiveRecord.fixtures_path = 'test/fixtures'
7
4
  Grape::ActiveRecord.seed_file = 'seeds.rb'
5
+ Grape::ActiveRecord._normalizer = case ::ActiveRecord::VERSION::MAJOR
6
+ when 4 then Grape::ActiveRecord::Compatibility4.new
7
+ when 5 then Grape::ActiveRecord::Compatibility5.new
8
+ end
@@ -1,4 +1,2 @@
1
- require 'grape/activerecord'
2
- load "active_record/railties/databases.rake"
3
- require "grape/activerecord/rake/activerecord_#{ActiveRecord::VERSION::MAJOR}"
4
- load "grape/activerecord/tasks.rake"
1
+ $stderr.puts "WARNING: loading 'grape/activerecord/rake' in your Rakefile is deprecated; do 'load \"tasks/grape-activerecord.rake\"' instead"
2
+ load "tasks/grape-activerecord.rake"
@@ -1,6 +1,6 @@
1
1
  module Grape
2
2
  module ActiveRecord
3
3
  # Gem version
4
- VERSION = '2.0.0'
4
+ VERSION = '2.1.0-rc1'
5
5
  end
6
6
  end
@@ -1,6 +1,7 @@
1
- require 'erb'
2
1
  require 'active_record'
3
2
  require 'hashie-forbidden_attributes'
4
3
  require 'grape/activerecord/version'
5
4
  require 'grape/activerecord/activerecord'
5
+ require 'grape/activerecord/compatibility_4'
6
+ require 'grape/activerecord/compatibility_5'
6
7
  require 'grape/activerecord/defaults'
@@ -0,0 +1,91 @@
1
+ require 'pathname'
2
+ require 'fileutils'
3
+ require 'active_support/core_ext/string/strip'
4
+ require 'active_support/core_ext/string/inflections'
5
+ require 'grape/activerecord'
6
+ load 'active_record/railties/databases.rake'
7
+
8
+ #
9
+ # Configure and override the default activerecord db rake tasks
10
+ #
11
+
12
+ Rake::Task.define_task('db:_load_config') do
13
+ ::ActiveRecord::Base.logger = nil
14
+ ::ActiveRecord::Tasks::DatabaseTasks.tap do |config|
15
+ config.root = Rake.application.original_dir
16
+ config.env = Grape::ActiveRecord.rack_env.to_s
17
+ config.db_dir = Grape::ActiveRecord.db_dir
18
+ config.migrations_paths = Array(Grape::ActiveRecord.migrations_paths)
19
+ config.fixtures_path = Grape::ActiveRecord.fixtures_path
20
+ config.database_configuration = ::ActiveRecord::Base.configurations
21
+ config.seed_loader = Object.new
22
+ config.seed_loader.instance_eval do
23
+ def load_seed
24
+ load "#{Grape::ActiveRecord.db_dir}/#{Grape::ActiveRecord.seed_file}"
25
+ end
26
+ end
27
+ end
28
+ end
29
+
30
+ Rake::Task['db:load_config'].clear
31
+ Rake::Task.define_task('db:load_config') do
32
+ # Run the user's db:environment task first, so they have an opportunity to set a custom db config location
33
+ Rake::Task['db:environment'].invoke
34
+ end
35
+
36
+ Rake::Task.define_task('db:environment') do
37
+ # defined by user
38
+ end
39
+
40
+ # Load db config at the end of user-defined db:environment
41
+ Rake::Task['db:environment'].enhance do
42
+ Rake::Task['db:_load_config'].invoke
43
+ end
44
+
45
+ Rake::Task['db:test:deprecated'].clear if Rake::Task.task_defined?('db:test:deprecated')
46
+
47
+ #
48
+ # Define grape-activerecord helper tasks
49
+ #
50
+
51
+ namespace :db do
52
+ namespace :test do
53
+ task :environment do
54
+ ENV['RACK_ENV'] = 'test'
55
+ end
56
+ end
57
+
58
+ desc "Create a migration (parameters: NAME, VERSION)"
59
+ task :create_migration do
60
+ unless ENV["NAME"]
61
+ puts "No NAME specified. Example usage: `rake db:create_migration NAME=create_widgets`"
62
+ exit 1
63
+ end
64
+
65
+ name = ENV["NAME"]
66
+ version = ENV["VERSION"] || Time.now.utc.strftime("%Y%m%d%H%M%S")
67
+
68
+ Grape::ActiveRecord._normalizer.migrations_paths.each do |directory|
69
+ next unless File.exists?(directory)
70
+ migration_files = Pathname(directory).children
71
+ if duplicate = migration_files.find { |path| path.basename.to_s.include?(name) }
72
+ puts "Another migration is already named \"#{name}\": #{duplicate}."
73
+ exit 1
74
+ end
75
+ end
76
+
77
+ filename = "#{version}_#{name}.rb"
78
+ dirname = Grape::ActiveRecord._normalizer.migrations_path
79
+ path = File.join(dirname, filename)
80
+
81
+ FileUtils.mkdir_p(dirname)
82
+ File.write path, <<-MIGRATION.strip_heredoc
83
+ class #{name.camelize} < #{Grape::ActiveRecord._normalizer.migration_base_class_name}
84
+ def change
85
+ end
86
+ end
87
+ MIGRATION
88
+
89
+ puts path
90
+ end
91
+ end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: grape-activerecord
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.0.0
4
+ version: 2.1.0.pre.rc1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Jordan Hollinger
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2016-02-05 00:00:00.000000000 Z
11
+ date: 2016-07-31 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: grape
@@ -28,30 +28,36 @@ dependencies:
28
28
  name: activerecord
29
29
  requirement: !ruby/object:Gem::Requirement
30
30
  requirements:
31
- - - "~>"
31
+ - - ">="
32
32
  - !ruby/object:Gem::Version
33
33
  version: '4.0'
34
+ - - "<="
35
+ - !ruby/object:Gem::Version
36
+ version: '5.0'
34
37
  type: :runtime
35
38
  prerelease: false
36
39
  version_requirements: !ruby/object:Gem::Requirement
37
40
  requirements:
38
- - - "~>"
41
+ - - ">="
39
42
  - !ruby/object:Gem::Version
40
43
  version: '4.0'
44
+ - - "<="
45
+ - !ruby/object:Gem::Version
46
+ version: '5.0'
41
47
  - !ruby/object:Gem::Dependency
42
48
  name: hashie-forbidden_attributes
43
49
  requirement: !ruby/object:Gem::Requirement
44
50
  requirements:
45
51
  - - "~>"
46
52
  - !ruby/object:Gem::Version
47
- version: 0.1.1
53
+ version: '0.1'
48
54
  type: :runtime
49
55
  prerelease: false
50
56
  version_requirements: !ruby/object:Gem::Requirement
51
57
  requirements:
52
58
  - - "~>"
53
59
  - !ruby/object:Gem::Version
54
- version: 0.1.1
60
+ version: '0.1'
55
61
  description: Extends Grape with simple ActiveRecord integration
56
62
  email: jordan.hollinger@gmail.com
57
63
  executables: []
@@ -62,11 +68,12 @@ files:
62
68
  - README.md
63
69
  - lib/grape/activerecord.rb
64
70
  - lib/grape/activerecord/activerecord.rb
71
+ - lib/grape/activerecord/compatibility_4.rb
72
+ - lib/grape/activerecord/compatibility_5.rb
65
73
  - lib/grape/activerecord/defaults.rb
66
74
  - lib/grape/activerecord/rake.rb
67
- - lib/grape/activerecord/rake/activerecord_4.rb
68
- - lib/grape/activerecord/tasks.rake
69
75
  - lib/grape/activerecord/version.rb
76
+ - lib/tasks/grape-activerecord.rake
70
77
  homepage: https://github.com/jhollinger/grape-activerecord
71
78
  licenses:
72
79
  - MIT
@@ -79,12 +86,12 @@ required_ruby_version: !ruby/object:Gem::Requirement
79
86
  requirements:
80
87
  - - ">="
81
88
  - !ruby/object:Gem::Version
82
- version: 1.9.2
89
+ version: 2.1.0
83
90
  required_rubygems_version: !ruby/object:Gem::Requirement
84
91
  requirements:
85
- - - ">="
92
+ - - ">"
86
93
  - !ruby/object:Gem::Version
87
- version: '0'
94
+ version: 1.3.1
88
95
  requirements: []
89
96
  rubyforge_project:
90
97
  rubygems_version: 2.4.5.1
@@ -1,35 +0,0 @@
1
- Rake::Task.define_task('db:_load_config') do
2
- ActiveRecord::Base.logger = nil
3
-
4
- ActiveRecord::Tasks::DatabaseTasks.tap do |config|
5
- config.root = Rake.application.original_dir
6
- config.env = Grape::ActiveRecord.rack_env.to_s
7
- config.db_dir = Grape::ActiveRecord.db_dir
8
- config.migrations_paths = Array(Grape::ActiveRecord.migrations_paths)
9
- config.fixtures_path = Grape::ActiveRecord.fixtures_path
10
- config.database_configuration = ActiveRecord::Base.configurations
11
- config.seed_loader = Object.new
12
- config.seed_loader.instance_eval do
13
- def load_seed
14
- load "#{ActiveRecord::Tasks::DatabaseTasks.db_dir}/#{Grape::ActiveRecord.seed_file}"
15
- end
16
- end
17
- end
18
- end
19
-
20
- Rake::Task['db:load_config'].clear
21
- Rake::Task.define_task('db:load_config') do
22
- # Run the user's db:environment task first, so they have an opportunity to set a custom db config location
23
- Rake::Task['db:environment'].invoke
24
- end
25
-
26
- Rake::Task.define_task('db:environment') do
27
- # defined by user
28
- end
29
-
30
- # Load db config at the end of user-defined db:environment
31
- Rake::Task['db:environment'].enhance do
32
- Rake::Task['db:_load_config'].invoke
33
- end
34
-
35
- Rake::Task['db:test:deprecated'].clear if Rake::Task.task_defined?('db:test:deprecated')
@@ -1,46 +0,0 @@
1
- require 'pathname'
2
- require 'fileutils'
3
- require 'active_support/core_ext/string/strip'
4
- require 'active_support/core_ext/string/inflections'
5
-
6
- namespace :db do
7
- namespace :test do
8
- task :environment do
9
- ENV['RACK_ENV'] = 'test'
10
- end
11
- end
12
-
13
- desc "Create a migration (parameters: NAME, VERSION)"
14
- task :create_migration do
15
- unless ENV["NAME"]
16
- puts "No NAME specified. Example usage: `rake db:create_migration NAME=create_widgets`"
17
- exit 1
18
- end
19
-
20
- name = ENV["NAME"]
21
- version = ENV["VERSION"] || Time.now.utc.strftime("%Y%m%d%H%M%S")
22
-
23
- ActiveRecord::Migrator.migrations_paths.each do |directory|
24
- next unless File.exists?(directory)
25
- migration_files = Pathname(directory).children
26
- if duplicate = migration_files.find { |path| path.basename.to_s.include?(name) }
27
- puts "Another migration is already named \"#{name}\": #{duplicate}."
28
- exit 1
29
- end
30
- end
31
-
32
- filename = "#{version}_#{name}.rb"
33
- dirname = ActiveRecord::Migrator.migrations_path
34
- path = File.join(dirname, filename)
35
-
36
- FileUtils.mkdir_p(dirname)
37
- File.write path, <<-MIGRATION.strip_heredoc
38
- class #{name.camelize} < ActiveRecord::Migration
39
- def change
40
- end
41
- end
42
- MIGRATION
43
-
44
- puts path
45
- end
46
- end