Class: ReleasesController

Inherits:
ApplicationController show all
Includes:
UrlHelper
Defined in:
app/controllers/releases_controller.rb

Instance Method Summary collapse

Methods included from UrlHelper

#edit_release_path, #edit_release_url, #feature_path, #github_commit_range_url, #github_commit_url, #github_project_url, #github_url?, #goldmine_case_number_url, #link_to_project_feature, #new_release_url, #release_path, #release_url, #releases_path

Methods inherited from ApplicationController

#after_sign_in_path_for, #api_authenticate!, #current_project, #expire_revision!, #followed_projects, #no_cache, #read_revision, #require_login, #return_or_cache_revision!, #revision, #save_current_project, #set_current_project, #unfurling?

Instance Method Details

#createObject



61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
# File 'app/controllers/releases_controller.rb', line 61

def create
  @release = @releases.new(params[:release])
  @release.user = current_user
  authorize! :create, @release

  if @release.save
    ProjectNotification.release(@release).deliver! if params[:send_release_email]
    @release.tickets.resolve_all! if params[:resolve_tickets]

    redirect_to @release
  else
    @commit0 = @release.commit0
    @commit1 = @release.commit1

    if @release.can_read_commits?
      @release.load_commits!
      @release.load_tickets!
    end

    render action: "new"
  end
end

#destroyObject



95
96
97
98
99
100
101
102
# File 'app/controllers/releases_controller.rb', line 95

def destroy
  @release = @releases.find(params[:id])
  authorize! :destroy, @release

  @release.destroy

  redirect_to releases_url
end

#editObject



45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
# File 'app/controllers/releases_controller.rb', line 45

def edit
  @release = @releases.find(params[:id])
  authorize! :update, @release

  if params[:recreate]
    if @release.can_read_commits?
      @release.load_commits!
      @release.load_tickets!
      @release.build_changes_from_commits
    end
  end

  @release.release_changes = [ReleaseChange.new(@release, "", "")] if @release.release_changes.none?
  @release.valid?
end

#indexObject



6
7
8
9
# File 'app/controllers/releases_controller.rb', line 6

def index
  @title = "Releases • #{@project.name}"
  @title << " (#{@environment})" if @environment
end

#newObject



18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
# File 'app/controllers/releases_controller.rb', line 18

def new
  @title = "New Release (#{@environment}) • #{@project.name}"

  @deploy = Deploy.find_by_id(params[:deploy_id])
  @releases = @releases.before(@deploy.completed_at) if @deploy
  @commit0 = params.fetch :commit0, @releases.most_recent_commit
  @commit1 = params.fetch :commit1, @deploy.try(:commit)
  @release = @releases.new(commit0: @commit0, commit1: @commit1, deploy: @deploy)
  authorize! :create, @release

  @manual = params[:manual] == "true" || !@project.has_version_control?

  if @release.can_read_commits?
    @release.load_commits!
    @release.load_tickets!
    @release.build_changes_from_commits
  end

  @release.release_changes = [ReleaseChange.new(@release, "", "")] if @release.release_changes.none?

  if request.headers["X-PJAX"]
    render template: "releases/_new_release", layout: false
  else
    render
  end
end

#showObject



11
12
13
14
15
16
# File 'app/controllers/releases_controller.rb', line 11

def show
  @release = @releases.find(params[:id])
  authorize! :show, @release

  @title = "Release #{@release.release_date.strftime("%b %-d")}#{@project.name}"
end

#updateObject



84
85
86
87
88
89
90
91
92
93
# File 'app/controllers/releases_controller.rb', line 84

def update
  @release = @releases.find(params[:id])
  authorize! :update, @release

  if @release.update_attributes(params[:release])
    redirect_to @release, notice: "Release was successfully updated."
  else
    render action: "edit"
  end
end