Class: Project
Class Method Summary
collapse
Instance Method Summary
collapse
adapters, has_adapter
#broken_features, #feature_broken!, #feature_state, #feature_states, #feature_working!, #set_feature_state!
Methods included from Retirement
#retire!, #retired?, #unretire!
Class Method Details
.[](slug) ⇒ Object
77
78
79
|
# File 'app/models/project.rb', line 77
def self.[](slug)
find_by_slug(slug)
end
|
Instance Method Details
#add_teammate(user_or_id, role = "Follower") ⇒ Object
104
105
106
107
108
|
# File 'app/models/project.rb', line 104
def add_teammate(user_or_id, role="Follower")
attributes = {project: self, name: role}
attributes[user_or_id.is_a?(User) ? :user : :user_id] = user_or_id
roles.create!(attributes)
end
|
#all_milestones ⇒ Object
160
161
162
|
# File 'app/models/project.rb', line 160
def all_milestones
milestones.fetch_all
end
|
#all_tickets ⇒ Object
146
147
148
|
# File 'app/models/project.rb', line 146
def all_tickets
tickets.fetch_all
end
|
#ci_server_job_url ⇒ Object
Continuous Integration ————————————————————————- #
241
242
243
|
# File 'app/models/project.rb', line 241
def ci_server_job_url
ci_server.job_url
end
|
#color_value ⇒ Object
45
46
47
|
# File 'app/models/project.rb', line 45
def color_value
Houston.config.project_colors[color]
end
|
#create_milestone!(attributes) ⇒ Object
168
169
170
171
172
173
174
175
176
177
178
179
180
|
# File 'app/models/project.rb', line 168
def create_milestone!(attributes)
milestone = milestones.build attributes
if milestone.valid?
if ticket_tracker.respond_to?(:create_milestone!)
milestone = milestones.create(
attributes.merge(
ticket_tracker.create_milestone!(milestone).attributes))
else
milestone.save
end
end
milestone
end
|
#create_ticket!(attributes) ⇒ Object
134
135
136
137
138
|
# File 'app/models/project.rb', line 134
def create_ticket!(attributes)
ticket = tickets.build attributes.merge(number: 0)
ticket = tickets.create_from_remote ticket_tracker.create_ticket!(ticket) if ticket.valid?
ticket
end
|
#environment(environment_name) ⇒ Object
61
62
63
|
# File 'app/models/project.rb', line 61
def environment(environment_name)
Environment.new(self, environment_name)
end
|
#environments ⇒ Object
49
50
51
|
# File 'app/models/project.rb', line 49
def environments
@environments ||= deploys.environments.map(&:downcase).uniq
end
|
#environments_with_release_notes ⇒ Object
53
54
55
|
# File 'app/models/project.rb', line 53
def environments_with_release_notes
environments.select(&method(:show_release_notes_for?))
end
|
#error_tracker_error_url(error_id) ⇒ Object
228
229
230
|
# File 'app/models/project.rb', line 228
def error_tracker_error_url(error_id)
error_tracker.error_url(error_id)
end
|
#error_tracker_project_url ⇒ Object
Error Tracker ————————————————————————- #
224
225
226
|
# File 'app/models/project.rb', line 224
def error_tracker_project_url
error_tracker.project_url
end
|
#extended_attributes ⇒ Object
65
66
67
|
# File 'app/models/project.rb', line 65
def extended_attributes
super || (self.extended_attributes = {})
end
|
#features ⇒ Object
81
82
83
|
# File 'app/models/project.rb', line 81
def features
(selected_features & Houston.config.project_features) + [:settings]
end
|
#find_commit_by_sha(sha) ⇒ Object
203
204
205
|
# File 'app/models/project.rb', line 203
def find_commit_by_sha(sha)
commits.find_or_create_by_sha(sha)
end
|
#find_or_create_tickets_by_number(*numbers) ⇒ Object
142
143
144
|
# File 'app/models/project.rb', line 142
def find_or_create_tickets_by_number(*numbers)
tickets.numbered(*numbers, sync: true)
end
|
#find_tickets(*query) ⇒ Object
154
155
156
|
# File 'app/models/project.rb', line 154
def find_tickets(*query)
tickets.fetch_with_query(*query)
end
|
#followers ⇒ Object
<– redefine followers to be everyone who participates in or follows the project
100
101
102
|
# File 'app/models/project.rb', line 100
def followers
roles.to_users
end
|
#is_teammate?(user_or_id) ⇒ Boolean
Also known as:
teammate?
110
111
112
|
# File 'app/models/project.rb', line 110
def is_teammate?(user_or_id)
roles.for_user(user_or_id).any?
end
|
#on_github? ⇒ Boolean
211
212
213
|
# File 'app/models/project.rb', line 211
def on_github?
repo.is_a? Houston::Adapters::VersionControl::GitAdapter::GithubRepo
end
|
#open_milestones ⇒ Object
164
165
166
|
# File 'app/models/project.rb', line 164
def open_milestones
milestones.fetch_open
end
|
#open_tickets ⇒ Object
150
151
152
|
# File 'app/models/project.rb', line 150
def open_tickets
tickets.fetch_open
end
|
#read_file(path, options = {}) ⇒ Object
207
208
209
|
# File 'app/models/project.rb', line 207
def read_file(path, options={})
repo.read_file(path, options)
end
|
#selected_features ⇒ Object
85
86
87
|
# File 'app/models/project.rb', line 85
def selected_features
Array(super).map(&:to_sym)
end
|
#show_release_notes_for?(environment_name) ⇒ Boolean
57
58
59
|
# File 'app/models/project.rb', line 57
def show_release_notes_for?(environment_name)
extended_attributes["releases.ignore.#{environment_name.downcase}"] != "1"
end
|
#teammates ⇒ Object
Teammates ————————————————————————- #
96
97
98
|
# File 'app/models/project.rb', line 96
def teammates
roles.participants.to_users
end
|
#testers ⇒ Object
73
74
75
|
# File 'app/models/project.rb', line 73
def testers
@testers ||= User.testers
end
|
#ticket_tracker_project_url ⇒ Object
Ticket Tracking ————————————————————————- #
124
125
126
|
# File 'app/models/project.rb', line 124
def ticket_tracker_project_url
ticket_tracker.project_url
end
|
#ticket_tracker_sync_in_progress? ⇒ Boolean
184
185
186
|
# File 'app/models/project.rb', line 184
def ticket_tracker_sync_in_progress?
ticket_tracker_sync_started_at.present? and ticket_tracker_sync_started_at > 5.minutes.ago
end
|
#ticket_tracker_ticket_url(ticket_number) ⇒ Object
128
129
130
|
# File 'app/models/project.rb', line 128
def ticket_tracker_ticket_url(ticket_number)
ticket_tracker.ticket_url(ticket_number)
end
|
#to_param ⇒ Object
41
42
43
|
# File 'app/models/project.rb', line 41
def to_param
slug
end
|
#version_control_temp_path ⇒ Object
199
200
201
|
# File 'app/models/project.rb', line 199
def version_control_temp_path
Houston.root.join("tmp", "#{slug}.git").to_s
end
|
#view_options ⇒ Object
69
70
71
|
# File 'app/models/project.rb', line 69
def view_options
super || {}
end
|