Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
李少辉-开发者
gitlab-foss
提交
6135eb0a
G
gitlab-foss
项目概览
李少辉-开发者
/
gitlab-foss
通知
15
Star
0
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
G
gitlab-foss
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
体验新版 GitCode,发现更多精彩内容 >>
提交
6135eb0a
编写于
9月 10, 2014
作者:
D
Dmitriy Zaporozhets
浏览文件
操作
浏览文件
下载
差异文件
Merge pull request #7705 from dblessing/serialize_service_properties
Serialize service properties
上级
4a5719f9
a0dbcd23
变更
20
显示空白变更内容
内联
并排
Showing
20 changed file
with
84 addition
and
113 deletion
+84
-113
app/models/project_services/assembla_service.rb
app/models/project_services/assembla_service.rb
+2
-6
app/models/project_services/campfire_service.rb
app/models/project_services/campfire_service.rb
+2
-6
app/models/project_services/ci_service.rb
app/models/project_services/ci_service.rb
+1
-6
app/models/project_services/emails_on_push_service.rb
app/models/project_services/emails_on_push_service.rb
+2
-6
app/models/project_services/flowdock_service.rb
app/models/project_services/flowdock_service.rb
+2
-6
app/models/project_services/gemnasium_service.rb
app/models/project_services/gemnasium_service.rb
+2
-6
app/models/project_services/gitlab_ci_service.rb
app/models/project_services/gitlab_ci_service.rb
+2
-6
app/models/project_services/hipchat_service.rb
app/models/project_services/hipchat_service.rb
+2
-6
app/models/project_services/pivotaltracker_service.rb
app/models/project_services/pivotaltracker_service.rb
+2
-6
app/models/project_services/slack_service.rb
app/models/project_services/slack_service.rb
+2
-6
app/models/service.rb
app/models/service.rb
+20
-7
db/migrate/20140907220153_serialize_service_properties.rb
db/migrate/20140907220153_serialize_service_properties.rb
+35
-0
db/schema.rb
db/schema.rb
+4
-9
spec/factories.rb
spec/factories.rb
+0
-1
spec/models/assembla_service_spec.rb
spec/models/assembla_service_spec.rb
+1
-6
spec/models/flowdock_service_spec.rb
spec/models/flowdock_service_spec.rb
+1
-6
spec/models/gemnasium_service_spec.rb
spec/models/gemnasium_service_spec.rb
+1
-6
spec/models/gitlab_ci_service_spec.rb
spec/models/gitlab_ci_service_spec.rb
+1
-6
spec/models/service_spec.rb
spec/models/service_spec.rb
+1
-6
spec/models/slack_service_spec.rb
spec/models/slack_service_spec.rb
+1
-6
未找到文件。
app/models/project_services/assembla_service.rb
浏览文件 @
6135eb0a
...
...
@@ -5,21 +5,17 @@
# id :integer not null, primary key
# type :string(255)
# title :string(255)
# token :string(255)
# project_id :integer not null
# created_at :datetime
# updated_at :datetime
# active :boolean default(FALSE), not null
# project_url :string(255)
# subdomain :string(255)
# room :string(255)
# recipients :text
# api_key :string(255)
# properties :text
#
class
AssemblaService
<
Service
include
HTTParty
prop_accessor
:token
,
:subdomain
validates
:token
,
presence:
true
,
if: :activated?
def
title
...
...
app/models/project_services/campfire_service.rb
浏览文件 @
6135eb0a
...
...
@@ -5,19 +5,15 @@
# id :integer not null, primary key
# type :string(255)
# title :string(255)
# token :string(255)
# project_id :integer not null
# created_at :datetime
# updated_at :datetime
# active :boolean default(FALSE), not null
# project_url :string(255)
# subdomain :string(255)
# room :string(255)
# recipients :text
# api_key :string(255)
# properties :text
#
class
CampfireService
<
Service
prop_accessor
:token
,
:subdomain
,
:room
validates
:token
,
presence:
true
,
if: :activated?
def
title
...
...
app/models/project_services/ci_service.rb
浏览文件 @
6135eb0a
...
...
@@ -5,16 +5,11 @@
# id :integer not null, primary key
# type :string(255)
# title :string(255)
# token :string(255)
# project_id :integer not null
# created_at :datetime
# updated_at :datetime
# active :boolean default(FALSE), not null
# project_url :string(255)
# subdomain :string(255)
# room :string(255)
# recipients :text
# api_key :string(255)
# properties :text
#
# Base class for CI services
...
...
app/models/project_services/emails_on_push_service.rb
浏览文件 @
6135eb0a
...
...
@@ -5,19 +5,15 @@
# id :integer not null, primary key
# type :string(255)
# title :string(255)
# token :string(255)
# project_id :integer not null
# created_at :datetime
# updated_at :datetime
# active :boolean default(FALSE), not null
# project_url :string(255)
# subdomain :string(255)
# room :string(255)
# recipients :text
# api_key :string(255)
# properties :text
#
class
EmailsOnPushService
<
Service
prop_accessor
:recipients
validates
:recipients
,
presence:
true
,
if: :activated?
def
title
...
...
app/models/project_services/flowdock_service.rb
浏览文件 @
6135eb0a
...
...
@@ -5,21 +5,17 @@
# id :integer not null, primary key
# type :string(255)
# title :string(255)
# token :string(255)
# project_id :integer not null
# created_at :datetime
# updated_at :datetime
# active :boolean default(FALSE), not null
# project_url :string(255)
# subdomain :string(255)
# room :string(255)
# recipients :text
# api_key :string(255)
# properties :text
#
require
"flowdock-git-hook"
class
FlowdockService
<
Service
prop_accessor
:token
validates
:token
,
presence:
true
,
if: :activated?
def
title
...
...
app/models/project_services/gemnasium_service.rb
浏览文件 @
6135eb0a
...
...
@@ -5,21 +5,17 @@
# id :integer not null, primary key
# type :string(255)
# title :string(255)
# token :string(255)
# project_id :integer not null
# created_at :datetime
# updated_at :datetime
# active :boolean default(FALSE), not null
# project_url :string(255)
# subdomain :string(255)
# room :string(255)
# recipients :text
# api_key :string(255)
# properties :text
#
require
"gemnasium/gitlab_service"
class
GemnasiumService
<
Service
prop_accessor
:token
,
:api_key
validates
:token
,
:api_key
,
presence:
true
,
if: :activated?
def
title
...
...
app/models/project_services/gitlab_ci_service.rb
浏览文件 @
6135eb0a
...
...
@@ -5,19 +5,15 @@
# id :integer not null, primary key
# type :string(255)
# title :string(255)
# token :string(255)
# project_id :integer not null
# created_at :datetime
# updated_at :datetime
# active :boolean default(FALSE), not null
# project_url :string(255)
# subdomain :string(255)
# room :string(255)
# recipients :text
# api_key :string(255)
# property :text
#
class
GitlabCiService
<
CiService
prop_accessor
:project_url
,
:token
validates
:project_url
,
presence:
true
,
if: :activated?
validates
:token
,
presence:
true
,
if: :activated?
...
...
app/models/project_services/hipchat_service.rb
浏览文件 @
6135eb0a
...
...
@@ -5,21 +5,17 @@
# id :integer not null, primary key
# type :string(255)
# title :string(255)
# token :string(255)
# project_id :integer not null
# created_at :datetime
# updated_at :datetime
# active :boolean default(FALSE), not null
# project_url :string(255)
# subdomain :string(255)
# room :string(255)
# recipients :text
# api_key :string(255)
# properties :text
#
class
HipchatService
<
Service
MAX_COMMITS
=
3
prop_accessor
:token
,
:room
validates
:token
,
presence:
true
,
if: :activated?
def
title
...
...
app/models/project_services/pivotaltracker_service.rb
浏览文件 @
6135eb0a
...
...
@@ -5,21 +5,17 @@
# id :integer not null, primary key
# type :string(255)
# title :string(255)
# token :string(255)
# project_id :integer not null
# created_at :datetime
# updated_at :datetime
# active :boolean default(FALSE), not null
# project_url :string(255)
# subdomain :string(255)
# room :string(255)
# recipients :text
# api_key :string(255)
# properties :text
#
class
PivotaltrackerService
<
Service
include
HTTParty
prop_accessor
:token
validates
:token
,
presence:
true
,
if: :activated?
def
title
...
...
app/models/project_services/slack_service.rb
浏览文件 @
6135eb0a
...
...
@@ -5,19 +5,15 @@
# id :integer not null, primary key
# type :string(255)
# title :string(255)
# token :string(255)
# project_id :integer not null
# created_at :datetime
# updated_at :datetime
# active :boolean default(FALSE), not null
# project_url :string(255)
# subdomain :string(255)
# room :string(255)
# recipients :text
# api_key :string(255)
# properties :text
#
class
SlackService
<
Service
prop_accessor
:room
,
:subdomain
,
:token
validates
:room
,
presence:
true
,
if: :activated?
validates
:subdomain
,
presence:
true
,
if: :activated?
validates
:token
,
presence:
true
,
if: :activated?
...
...
app/models/service.rb
浏览文件 @
6135eb0a
...
...
@@ -5,22 +5,19 @@
# id :integer not null, primary key
# type :string(255)
# title :string(255)
# token :string(255)
# project_id :integer not null
# created_at :datetime
# updated_at :datetime
# active :boolean default(FALSE), not null
# project_url :string(255)
# subdomain :string(255)
# room :string(255)
# recipients :text
# api_key :string(255)
#
# properties :text
# To add new service you should build a class inherited from Service
# and implement a set of methods
class
Service
<
ActiveRecord
::
Base
serialize
:properties
,
JSON
default_value_for
:active
,
false
default_value_for
:properties
,
{}
belongs_to
:project
has_one
:service_hook
...
...
@@ -63,4 +60,20 @@ class Service < ActiveRecord::Base
def
can_test?
!
project
.
empty_repo?
end
# Provide convenient accessor methods
# for each serialized property.
def
self
.
prop_accessor
(
*
args
)
args
.
each
do
|
arg
|
class_eval
%{
def #{arg}
properties['#{arg}']
end
def #{arg}=(value)
self.properties['#{arg}'] = value
end
}
end
end
end
db/migrate/20140907220153_serialize_service_properties.rb
0 → 100644
浏览文件 @
6135eb0a
class
SerializeServiceProperties
<
ActiveRecord
::
Migration
def
change
add_column
:services
,
:properties
,
:text
associations
=
{
AssemblaService
:
[
:token
,
:subdomain
],
CampfireService
:
[
:token
,
:subdomain
,
:room
],
EmailsOnPushService
:
[
:recipients
],
FlowdockService
:
[
:token
],
GemnasiumService
:
[
:api_key
,
:token
],
GitlabCiService
:
[
:token
,
:project_url
],
HipchatService
:
[
:token
,
:room
],
PivotaltrackerService
:
[
:token
],
SlackService
:
[
:subdomain
,
:token
,
:room
],
JenkinsService
:
[
:token
,
:subdomain
],
JiraService
:
[
:project_url
,
:username
,
:password
,
:api_version
,
:jira_issue_transition_id
],
}
Service
.
all
.
each
do
|
service
|
associations
[
service
.
type
.
to_sym
].
each
do
|
attribute
|
service
.
send
(
"
#{
attribute
}
="
,
service
.
attributes
[
attribute
.
to_s
])
end
service
.
save!
end
remove_column
:services
,
:project_url
,
:string
remove_column
:services
,
:subdomain
,
:string
remove_column
:services
,
:room
,
:string
remove_column
:services
,
:recipients
,
:text
remove_column
:services
,
:api_key
,
:string
remove_column
:services
,
:token
,
:string
end
end
db/schema.rb
浏览文件 @
6135eb0a
...
...
@@ -11,7 +11,7 @@
#
# It's strongly recommended that you check this file into your version control system.
ActiveRecord
::
Schema
.
define
(
version:
2014090
3115954
)
do
ActiveRecord
::
Schema
.
define
(
version:
2014090
7220153
)
do
# These are extensions that must be enabled in order to support this database
enable_extension
"plpgsql"
...
...
@@ -265,16 +265,11 @@ ActiveRecord::Schema.define(version: 20140903115954) do
create_table
"services"
,
force:
true
do
|
t
|
t
.
string
"type"
t
.
string
"title"
t
.
string
"token"
t
.
integer
"project_id"
,
null:
false
t
.
datetime
"created_at"
t
.
datetime
"updated_at"
t
.
boolean
"active"
,
default:
false
,
null:
false
t
.
string
"project_url"
t
.
string
"subdomain"
t
.
string
"room"
t
.
text
"recipients"
t
.
string
"api_key"
t
.
text
"properties"
end
add_index
"services"
,
[
"project_id"
],
name:
"index_services_on_project_id"
,
using: :btree
...
...
spec/factories.rb
浏览文件 @
6135eb0a
...
...
@@ -165,7 +165,6 @@ FactoryGirl.define do
factory
:service
do
type
""
title
"GitLab CI"
token
"x56olispAND34ng"
project
end
...
...
spec/models/assembla_service_spec.rb
浏览文件 @
6135eb0a
...
...
@@ -5,16 +5,11 @@
# id :integer not null, primary key
# type :string(255)
# title :string(255)
# token :string(255)
# project_id :integer not null
# created_at :datetime
# updated_at :datetime
# active :boolean default(FALSE), not null
# project_url :string(255)
# subdomain :string(255)
# room :string(255)
# recipients :text
# api_key :string(255)
# properties :text
#
require
'spec_helper'
...
...
spec/models/flowdock_service_spec.rb
浏览文件 @
6135eb0a
...
...
@@ -5,16 +5,11 @@
# id :integer not null, primary key
# type :string(255)
# title :string(255)
# token :string(255)
# project_id :integer not null
# created_at :datetime
# updated_at :datetime
# active :boolean default(FALSE), not null
# project_url :string(255)
# subdomain :string(255)
# room :string(255)
# recipients :text
# api_key :string(255)
# properties :text
#
require
'spec_helper'
...
...
spec/models/gemnasium_service_spec.rb
浏览文件 @
6135eb0a
...
...
@@ -5,16 +5,11 @@
# id :integer not null, primary key
# type :string(255)
# title :string(255)
# token :string(255)
# project_id :integer not null
# created_at :datetime
# updated_at :datetime
# active :boolean default(FALSE), not null
# project_url :string(255)
# subdomain :string(255)
# room :string(255)
# recipients :text
# api_key :string(255)
# properties :text
#
require
'spec_helper'
...
...
spec/models/gitlab_ci_service_spec.rb
浏览文件 @
6135eb0a
...
...
@@ -5,16 +5,11 @@
# id :integer not null, primary key
# type :string(255)
# title :string(255)
# token :string(255)
# project_id :integer not null
# created_at :datetime
# updated_at :datetime
# active :boolean default(FALSE), not null
# project_url :string(255)
# subdomain :string(255)
# room :string(255)
# recipients :text
# api_key :string(255)
# properties :text
#
require
'spec_helper'
...
...
spec/models/service_spec.rb
浏览文件 @
6135eb0a
...
...
@@ -5,16 +5,11 @@
# id :integer not null, primary key
# type :string(255)
# title :string(255)
# token :string(255)
# project_id :integer not null
# created_at :datetime
# updated_at :datetime
# active :boolean default(FALSE), not null
# project_url :string(255)
# subdomain :string(255)
# room :string(255)
# recipients :text
# api_key :string(255)
# properties :text
#
require
'spec_helper'
...
...
spec/models/slack_service_spec.rb
浏览文件 @
6135eb0a
...
...
@@ -5,16 +5,11 @@
# id :integer not null, primary key
# type :string(255)
# title :string(255)
# token :string(255)
# project_id :integer not null
# created_at :datetime
# updated_at :datetime
# active :boolean default(FALSE), not null
# project_url :string(255)
# subdomain :string(255)
# room :string(255)
# recipients :text
# api_key :string(255)
# properties :text
#
require
'spec_helper'
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录