Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion lib/scenic/adapters/postgres.rb
Original file line number Diff line number Diff line change
Expand Up @@ -58,7 +58,7 @@ def views
#
# @return [void]
def create_view(name, sql_definition)
execute "CREATE VIEW #{quote_table_name(name)} AS #{sql_definition};"
execute "CREATE VIEW #{quote_table_name(name)} WITH (security_invoker = true) AS #{sql_definition};"
end

# Updates a view in the database.
Expand Down
12 changes: 9 additions & 3 deletions lib/scenic/definition.rb
Original file line number Diff line number Diff line change
Expand Up @@ -3,11 +3,11 @@ module Scenic
class Definition
def initialize(name, version)
@name = name.to_s
@version = version.to_i
@version = version
end

def to_sql
File.read(full_path).tap do |content|
ERB.new(File.read(full_path)).result.tap do |content|
if content.empty?
raise "Define view query in #{path} before migrating."
end
Expand All @@ -23,7 +23,8 @@ def path
end

def version
@version.to_s.rjust(2, "0")
@version = latest_version if @version == :latest
@version.to_i.to_s.rjust(2, "0")
end

private
Expand All @@ -33,5 +34,10 @@ def version
def filename
"#{UnaffixedName.for(name).tr('.', '_')}_v#{version}.sql"
end

def latest_version
Dir.glob(Rails.root.join('db', 'views', "#{name}*.sql")).sort.last =~ /#{name}_v(\d*).sql/i
$1
end
end
end
2 changes: 1 addition & 1 deletion lib/scenic/version.rb
Original file line number Diff line number Diff line change
@@ -1,3 +1,3 @@
module Scenic
VERSION = "1.7.0".freeze
VERSION = "1.7.1".freeze
end
10 changes: 10 additions & 0 deletions spec/scenic/definition_spec.rb
Original file line number Diff line number Diff line change
Expand Up @@ -65,6 +65,16 @@ module Scenic

expect(definition.version).to eq "15"
end

it "returns latest version" do
with_view_definition 'a_versioned_file', 1, "Select 1 from somethings" do
with_view_definition 'a_versioned_file', 5, "Select * from somethings" do
definition = Definition.new('a_versioned_file', :latest)

expect(definition.version).to eq "05"
end
end
end
end
end
end
3 changes: 3 additions & 0 deletions spec/spec_helper.rb
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,9 @@
require "support/view_definition_helpers"

RSpec.configure do |config|
config.filter_run focus: true
config.run_all_when_everything_filtered = true

config.order = "random"
config.include ViewDefinitionHelpers
config.include RailsConfigurationHelpers
Expand Down