GitlabSerialize: cause of invalid yaml in some events we migrate to json serialization
This commit is contained in:
parent
8aa5076d68
commit
a951e6f8ae
|
@ -14,7 +14,7 @@ class Event < ActiveRecord::Base
|
||||||
belongs_to :project
|
belongs_to :project
|
||||||
belongs_to :target, :polymorphic => true
|
belongs_to :target, :polymorphic => true
|
||||||
|
|
||||||
serialize :data
|
serialize :data, GitlabSerialize.new
|
||||||
|
|
||||||
scope :recent, order("created_at DESC")
|
scope :recent, order("created_at DESC")
|
||||||
scope :code_push, where(:action => Pushed)
|
scope :code_push, where(:action => Pushed)
|
||||||
|
@ -36,7 +36,7 @@ class Event < ActiveRecord::Base
|
||||||
end
|
end
|
||||||
|
|
||||||
def push?
|
def push?
|
||||||
action == self.class::Pushed
|
action == self.class::Pushed && valid_push?
|
||||||
end
|
end
|
||||||
|
|
||||||
def merged?
|
def merged?
|
||||||
|
|
|
@ -1,19 +1,25 @@
|
||||||
module Event::PushTrait
|
module Event::PushTrait
|
||||||
as_trait do
|
as_trait do
|
||||||
|
def valid_push?
|
||||||
|
data["ref"]
|
||||||
|
rescue => ex
|
||||||
|
false
|
||||||
|
end
|
||||||
|
|
||||||
def tag?
|
def tag?
|
||||||
data[:ref]["refs/tags"]
|
data["ref"]["refs/tags"]
|
||||||
end
|
end
|
||||||
|
|
||||||
def new_branch?
|
def new_branch?
|
||||||
data[:before] =~ /^00000/
|
commit_from =~ /^00000/
|
||||||
end
|
end
|
||||||
|
|
||||||
def new_ref?
|
def new_ref?
|
||||||
data[:before] =~ /^00000/
|
commit_from =~ /^00000/
|
||||||
end
|
end
|
||||||
|
|
||||||
def rm_ref?
|
def rm_ref?
|
||||||
data[:after] =~ /^00000/
|
commit_to =~ /^00000/
|
||||||
end
|
end
|
||||||
|
|
||||||
def md_ref?
|
def md_ref?
|
||||||
|
@ -21,11 +27,11 @@ module Event::PushTrait
|
||||||
end
|
end
|
||||||
|
|
||||||
def commit_from
|
def commit_from
|
||||||
data[:before]
|
data["before"]
|
||||||
end
|
end
|
||||||
|
|
||||||
def commit_to
|
def commit_to
|
||||||
data[:after]
|
data["after"]
|
||||||
end
|
end
|
||||||
|
|
||||||
def ref_name
|
def ref_name
|
||||||
|
@ -37,16 +43,16 @@ module Event::PushTrait
|
||||||
end
|
end
|
||||||
|
|
||||||
def branch_name
|
def branch_name
|
||||||
@branch_name ||= data[:ref].gsub("refs/heads/", "")
|
@branch_name ||= data["ref"].gsub("refs/heads/", "")
|
||||||
end
|
end
|
||||||
|
|
||||||
def tag_name
|
def tag_name
|
||||||
@tag_name ||= data[:ref].gsub("refs/tags/", "")
|
@tag_name ||= data["ref"].gsub("refs/tags/", "")
|
||||||
end
|
end
|
||||||
|
|
||||||
def commits
|
def commits
|
||||||
@commits ||= data[:commits].map do |commit|
|
@commits ||= data["commits"].map do |commit|
|
||||||
project.commit(commit[:id])
|
project.commit(commit["id"])
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|
17
app/models/gitlab_serialize.rb
Normal file
17
app/models/gitlab_serialize.rb
Normal file
|
@ -0,0 +1,17 @@
|
||||||
|
class GitlabSerialize
|
||||||
|
# Called to deserialize data to ruby object.
|
||||||
|
def load(data)
|
||||||
|
JSON.load(data)
|
||||||
|
rescue JSON::ParserError
|
||||||
|
begin
|
||||||
|
YAML.load(data)
|
||||||
|
rescue Psych::SyntaxError
|
||||||
|
nil
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
# Called to convert from ruby object to serialized data.
|
||||||
|
def dump(obj)
|
||||||
|
JSON.dump(obj)
|
||||||
|
end
|
||||||
|
end
|
|
@ -44,7 +44,7 @@
|
||||||
= link_to profile_path, :class => "btn" do
|
= link_to profile_path, :class => "btn" do
|
||||||
Your Profile »
|
Your Profile »
|
||||||
.span10.left= render "dashboard/projects_feed", :projects => @active_projects
|
.span10.left= render "dashboard/projects_feed", :projects => @active_projects
|
||||||
- if @last_push
|
- if @last_push && @last_push.valid_push?
|
||||||
.padded.prepend-top-20
|
.padded.prepend-top-20
|
||||||
%h5
|
%h5
|
||||||
%small Latest push was to the #{@last_push.branch_name} branch of #{@last_push.project.name}:
|
%small Latest push was to the #{@last_push.branch_name} branch of #{@last_push.project.name}:
|
||||||
|
|
Loading…
Reference in a new issue