activerecord_views 0.0.15 → 0.0.16

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: a0fea356d1e38741b89df29e6dd55820c727990e
4
- data.tar.gz: eb072ae4e60465e088d82dc5901e953ad9553442
3
+ metadata.gz: a3665d75c1a7665c0c436548c6aef0b045cf65a6
4
+ data.tar.gz: 411bd452c4ffc8afaf05e9a06ea2bf708e2c6b54
5
5
  SHA512:
6
- metadata.gz: 62c41e131f1fe0469325f60791695f5effbc68fd5c210106e8eb9da2987790648fcd1c6d55cc63c85ad8aa562cb30f1440018aa3c70096ddf7b8b1bd5873321e
7
- data.tar.gz: 453782f417e2fb7d265b91a4012c0770395a3ef697cf23a867ccc4aa98bc5c719ae371011335b228fd1a7ea671300f9d2fdfe46a57d84a3735758136fb5e8901
6
+ metadata.gz: '0693473e52cbd7add2dfc0ba7d95c700e877b39ab8cb97f0a38eba7be10424e788534788ab1d48f37b1066e75a16bfc82c4ee06c018eb6fc3ccc138a861fa623'
7
+ data.tar.gz: 8f7940ea28efbee5f26fdd0ec6273b0fa665bc876c5634d6bdc37e7633ea7e86b1572079b1b52098e2163da385cdf187326bba53992c0799b966697ebc44f82c
@@ -5,8 +5,8 @@ module ActiveRecordViews
5
5
  extend ActiveSupport::Concern
6
6
 
7
7
  def self.currently_migrating?
8
- if defined?(Rake) && Rake.method_defined?(:application)
9
- Rake.application.top_level_tasks.include?('db:migrate')
8
+ if defined?(Rake) && Rake.respond_to?(:application)
9
+ Rake.application.top_level_tasks.any? { |task_name| task_name =~ /^db:migrate($|:)/ }
10
10
  end
11
11
  end
12
12
 
@@ -23,12 +23,7 @@ module ActiveRecordViews
23
23
  sql ||= begin
24
24
  sql_path = ActiveRecordViews.find_sql_file(self.name.underscore)
25
25
  ActiveRecordViews.register_for_reload self, sql_path
26
-
27
- if sql_path.end_with?('.erb')
28
- ERB.new(File.read(sql_path)).result
29
- else
30
- File.read(sql_path)
31
- end
26
+ ActiveRecordViews.read_sql_file(sql_path)
32
27
  end
33
28
 
34
29
  ActiveRecordViews.create_view self.connection, self.table_name, self.name, sql, self.view_options
@@ -18,7 +18,7 @@ module ActiveRecordViews
18
18
 
19
19
  def reload!
20
20
  if File.exist? sql_path
21
- ActiveRecordViews.create_view model_class.connection, model_class.table_name, model_class.name, File.read(sql_path), model_class.view_options
21
+ ActiveRecordViews.create_view model_class.connection, model_class.table_name, model_class.name, ActiveRecordViews.read_sql_file(sql_path), model_class.view_options
22
22
  else
23
23
  ActiveRecordViews.drop_view model_class.connection, model_class.table_name
24
24
  end
@@ -1,3 +1,3 @@
1
1
  module ActiveRecordViews
2
- VERSION = '0.0.15'
2
+ VERSION = '0.0.16'
3
3
  end
@@ -28,6 +28,14 @@ module ActiveRecordViews
28
28
  raise "could not find #{name}.sql"
29
29
  end
30
30
 
31
+ def self.read_sql_file(sql_path)
32
+ if sql_path.end_with?('.erb')
33
+ ERB.new(File.read(sql_path)).result
34
+ else
35
+ File.read(sql_path)
36
+ end
37
+ end
38
+
31
39
  def self.without_transaction(connection)
32
40
  in_transaction = if connection.respond_to? :transaction_open?
33
41
  connection.transaction_open?
@@ -13,6 +13,7 @@ Rake::Task['db:structure:dump'].enhance do
13
13
  set_psql_env(config)
14
14
  end
15
15
 
16
+ require 'shellwords'
16
17
  system("pg_dump --data-only --table=active_record_views #{Shellwords.escape config['database']} >> #{Shellwords.escape filename}")
17
18
  raise 'active_record_views metadata dump failed' unless $?.success?
18
19
 
@@ -59,6 +59,31 @@ describe ActiveRecordViews::Extension do
59
59
  test_request # trigger cleanup
60
60
  end
61
61
 
62
+ it 'reloads the database view when external ERB SQL file is modified' do
63
+ ['foo 42', 'bar 42'].each do |sql|
64
+ expect(ActiveRecordViews).to receive(:create_view).with(
65
+ anything,
66
+ 'modified_erb_file_test_models',
67
+ 'ModifiedErbFileTestModel',
68
+ sql,
69
+ {}
70
+ ).once.ordered
71
+ end
72
+
73
+ with_temp_sql_dir do |temp_dir|
74
+ sql_file = File.join(temp_dir, 'modified_erb_file_test_model.sql.erb')
75
+ update_file sql_file, 'foo <%= 2*3*7 %>'
76
+
77
+ class ModifiedErbFileTestModel < ActiveRecord::Base
78
+ is_view
79
+ end
80
+
81
+ update_file sql_file, 'bar <%= 2*3*7 %>'
82
+ test_request
83
+ end
84
+ test_request # trigger cleanup
85
+ end
86
+
62
87
  it 'drops the view if the external SQL file is deleted' do
63
88
  with_temp_sql_dir do |temp_dir|
64
89
  sql_file = File.join(temp_dir, 'deleted_file_test_model.sql')
@@ -2,7 +2,7 @@ require 'bundler/setup'
2
2
  require 'combustion'
3
3
 
4
4
  Combustion::Database.instance_eval do
5
- def setup
5
+ def setup(options)
6
6
  ActiveRecord::Base.configurations = YAML.load(ERB.new(File.read("#{Rails.root}/config/database.yml")).result)
7
7
  end
8
8
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: activerecord_views
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.15
4
+ version: 0.0.16
5
5
  platform: ruby
6
6
  authors:
7
7
  - Jason Weathered
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2015-06-22 00:00:00.000000000 Z
11
+ date: 2017-07-21 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: activerecord
@@ -155,7 +155,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
155
155
  version: '0'
156
156
  requirements: []
157
157
  rubyforge_project:
158
- rubygems_version: 2.4.8
158
+ rubygems_version: 2.6.11
159
159
  signing_key:
160
160
  specification_version: 4
161
161
  summary: Automatic database view creation for ActiveRecord