redmineup 1.0.2
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +7 -0
- data/.gitignore +21 -0
- data/Gemfile +4 -0
- data/README.md +204 -0
- data/Rakefile +11 -0
- data/app/controllers/redmineup_controller.rb +26 -0
- data/app/views/redmine_crm/redmineup_calendar/_calendar.html.erb +34 -0
- data/app/views/redmineup/_money.html.erb +44 -0
- data/app/views/redmineup/settings.html.erb +10 -0
- data/bitbucket-pipelines.yml +50 -0
- data/config/currency_iso.json +2544 -0
- data/config/locales/cs.yml +13 -0
- data/config/locales/de.yml +13 -0
- data/config/locales/en.yml +13 -0
- data/config/locales/es.yml +13 -0
- data/config/locales/ru.yml +13 -0
- data/config/routes.rb +5 -0
- data/doc/CHANGELOG +14 -0
- data/doc/LICENSE.txt +339 -0
- data/lib/redmineup/acts_as_draftable/draft.rb +40 -0
- data/lib/redmineup/acts_as_draftable/up_acts_as_draftable.rb +172 -0
- data/lib/redmineup/acts_as_list/list.rb +282 -0
- data/lib/redmineup/acts_as_priceable/up_acts_as_priceable.rb +33 -0
- data/lib/redmineup/acts_as_taggable/tag.rb +81 -0
- data/lib/redmineup/acts_as_taggable/tag_list.rb +111 -0
- data/lib/redmineup/acts_as_taggable/tagging.rb +16 -0
- data/lib/redmineup/acts_as_taggable/up_acts_as_taggable.rb +357 -0
- data/lib/redmineup/acts_as_viewed/up_acts_as_viewed.rb +274 -0
- data/lib/redmineup/acts_as_votable/up_acts_as_votable.rb +80 -0
- data/lib/redmineup/acts_as_votable/up_acts_as_voter.rb +20 -0
- data/lib/redmineup/acts_as_votable/votable.rb +323 -0
- data/lib/redmineup/acts_as_votable/vote.rb +28 -0
- data/lib/redmineup/acts_as_votable/voter.rb +131 -0
- data/lib/redmineup/assets_manager.rb +43 -0
- data/lib/redmineup/colors_helper.rb +192 -0
- data/lib/redmineup/compatibility/application_controller_patch.rb +33 -0
- data/lib/redmineup/compatibility/routing_mapper_patch.rb +25 -0
- data/lib/redmineup/currency/formatting.rb +224 -0
- data/lib/redmineup/currency/heuristics.rb +151 -0
- data/lib/redmineup/currency/loader.rb +23 -0
- data/lib/redmineup/currency.rb +450 -0
- data/lib/redmineup/engine.rb +4 -0
- data/lib/redmineup/helpers/external_assets_helper.rb +20 -0
- data/lib/redmineup/helpers/form_tag_helper.rb +88 -0
- data/lib/redmineup/helpers/rup_calendar_helper.rb +146 -0
- data/lib/redmineup/helpers/tags_helper.rb +13 -0
- data/lib/redmineup/helpers/vote_helper.rb +35 -0
- data/lib/redmineup/hooks/views_layouts_hook.rb +11 -0
- data/lib/redmineup/liquid/drops/attachment_drop.rb +47 -0
- data/lib/redmineup/liquid/drops/issue_relations_drop.rb +41 -0
- data/lib/redmineup/liquid/drops/issues_drop.rb +217 -0
- data/lib/redmineup/liquid/drops/news_drop.rb +54 -0
- data/lib/redmineup/liquid/drops/projects_drop.rb +86 -0
- data/lib/redmineup/liquid/drops/time_entries_drop.rb +65 -0
- data/lib/redmineup/liquid/drops/users_drop.rb +68 -0
- data/lib/redmineup/liquid/filters/arrays.rb +254 -0
- data/lib/redmineup/liquid/filters/base.rb +249 -0
- data/lib/redmineup/liquid/filters/colors.rb +31 -0
- data/lib/redmineup/money_helper.rb +66 -0
- data/lib/redmineup/patches/liquid_patch.rb +33 -0
- data/lib/redmineup/settings/money.rb +46 -0
- data/lib/redmineup/settings.rb +53 -0
- data/lib/redmineup/version.rb +3 -0
- data/lib/redmineup.rb +108 -0
- data/redmineup.gemspec +29 -0
- data/test/acts_as_draftable/draft_test.rb +29 -0
- data/test/acts_as_draftable/rup_acts_as_draftable_test.rb +178 -0
- data/test/acts_as_taggable/rup_acts_as_taggable_test.rb +350 -0
- data/test/acts_as_taggable/tag_list_test.rb +34 -0
- data/test/acts_as_taggable/tag_test.rb +72 -0
- data/test/acts_as_taggable/tagging_test.rb +15 -0
- data/test/acts_as_viewed/rup_acts_as_viewed_test.rb +47 -0
- data/test/acts_as_votable/rup_acts_as_votable_test.rb +19 -0
- data/test/acts_as_votable/rup_acts_as_voter_test.rb +14 -0
- data/test/acts_as_votable/votable_test.rb +507 -0
- data/test/acts_as_votable/voter_test.rb +296 -0
- data/test/currency_test.rb +292 -0
- data/test/database.yml +17 -0
- data/test/fixtures/attachments.yml +14 -0
- data/test/fixtures/issues.yml +24 -0
- data/test/fixtures/news.yml +8 -0
- data/test/fixtures/projects.yml +10 -0
- data/test/fixtures/taggings.yml +32 -0
- data/test/fixtures/tags.yml +11 -0
- data/test/fixtures/users.yml +9 -0
- data/test/fixtures/votable_caches.yml +2 -0
- data/test/fixtures/votables.yml +4 -0
- data/test/fixtures/voters.yml +6 -0
- data/test/liquid/drops/attachment_drop_test.rb +15 -0
- data/test/liquid/drops/issue_relations_drop_test.rb +24 -0
- data/test/liquid/drops/issues_drop_test.rb +38 -0
- data/test/liquid/drops/news_drop_test.rb +38 -0
- data/test/liquid/drops/projects_drop_test.rb +44 -0
- data/test/liquid/drops/uses_drop_test.rb +36 -0
- data/test/liquid/filters/arrays_filter_test.rb +31 -0
- data/test/liquid/filters/base_filter_test.rb +67 -0
- data/test/liquid/filters/colors_filter_test.rb +33 -0
- data/test/liquid/liquid_helper.rb +34 -0
- data/test/models/attachment.rb +3 -0
- data/test/models/issue.rb +21 -0
- data/test/models/issue_relation.rb +10 -0
- data/test/models/news.rb +3 -0
- data/test/models/project.rb +8 -0
- data/test/models/user.rb +11 -0
- data/test/models/vote_classes.rb +33 -0
- data/test/money_helper_test.rb +12 -0
- data/test/schema.rb +144 -0
- data/test/tags_helper_test.rb +29 -0
- data/test/test_helper.rb +66 -0
- data/test/vote_helper_test.rb +28 -0
- data/vendor/assets/images/money.png +0 -0
- data/vendor/assets/images/vcard.png +0 -0
- data/vendor/assets/javascripts/Chart.bundle.min.js +16 -0
- data/vendor/assets/javascripts/select2.js +2 -0
- data/vendor/assets/javascripts/select2_helpers.js +192 -0
- data/vendor/assets/stylesheets/money.css +96 -0
- data/vendor/assets/stylesheets/select2.css +424 -0
- metadata +295 -0
checksums.yaml
ADDED
@@ -0,0 +1,7 @@
|
|
1
|
+
---
|
2
|
+
SHA256:
|
3
|
+
metadata.gz: f8906ecd18c32f3d77f7ecb9ce342051cf620884442332900bd18b3678847264
|
4
|
+
data.tar.gz: ac7a23b98f0a4e612fe255c981d563069c53d4d29448fd1e60fefc8d45244cca
|
5
|
+
SHA512:
|
6
|
+
metadata.gz: 9367020f0bb91903c3c64c2e631f4ccf7559331b59373f11b4b6afa0ed98f6496e1441af347ef287720cee9a6461aab3b3138f4e902dad6e5d6e54ac2d9ad29c
|
7
|
+
data.tar.gz: 6dc7397b41cd7141de6167777edfc2306dd9d7010aa8813e868df272e648f8f6ed49a129104ff54d469fad074d0762d38468f86b2ac8ebdea38e90f0774f25ae
|
data/.gitignore
ADDED
@@ -0,0 +1,21 @@
|
|
1
|
+
/.bundle/
|
2
|
+
/.yardoc
|
3
|
+
/Gemfile.lock
|
4
|
+
/_yardoc/
|
5
|
+
/coverage/
|
6
|
+
/pkg/
|
7
|
+
/public/
|
8
|
+
/test/public/
|
9
|
+
/spec/reports/
|
10
|
+
/tmp/
|
11
|
+
*.bundle
|
12
|
+
*.so
|
13
|
+
*.o
|
14
|
+
*.a
|
15
|
+
mkmf.log
|
16
|
+
/test/debug.log
|
17
|
+
/Guardfile
|
18
|
+
/Gemfile.local
|
19
|
+
/Gemfile.local.lock
|
20
|
+
*.gem
|
21
|
+
/.idea/*
|
data/Gemfile
ADDED
data/README.md
ADDED
@@ -0,0 +1,204 @@
|
|
1
|
+
# Redmineup
|
2
|
+
|
3
|
+
This gem is used at RedmineUP as a general place for shared functionality and
|
4
|
+
assets. It contains **Chart.js** and **select2** JS libraries, various mixins
|
5
|
+
for ActiveRecord models and other things you might find useful.
|
6
|
+
|
7
|
+
Among mixins there are:
|
8
|
+
|
9
|
+
* up_acts_as_draftable
|
10
|
+
* up_acts_as_taggable
|
11
|
+
* up_acts_as_viewable
|
12
|
+
* up_acts_as_votable
|
13
|
+
|
14
|
+
|
15
|
+
## Installation
|
16
|
+
|
17
|
+
Add it to your plugin's Gemfile:
|
18
|
+
```ruby
|
19
|
+
gem 'redmineup'
|
20
|
+
```
|
21
|
+
|
22
|
+
Then invoke the following command in your plugin's or Redmine directory:
|
23
|
+
```
|
24
|
+
$ bundle install
|
25
|
+
```
|
26
|
+
|
27
|
+
And now you can start using it.
|
28
|
+
|
29
|
+
|
30
|
+
## Usage
|
31
|
+
### Drafts
|
32
|
+
This module allows saving and restoring drafts for different models. To be
|
33
|
+
saved as a draft, an instance does not need to pass the validations. Drafts
|
34
|
+
store not only model attributes, but also associations and virtual attributes.
|
35
|
+
A draft could be linked to a given user, so every user can manage his/her own
|
36
|
+
drafts independent of others. A draft might have a parent instance.
|
37
|
+
|
38
|
+
First of all, drafts need to be saved somewhere, so let's create a migration:
|
39
|
+
```ruby
|
40
|
+
class CreateDrafts < Rails.version > '5' ? ActiveRecord::Migration[5.0] : ActiveRecord::Migration
|
41
|
+
def change
|
42
|
+
ActiveRecord::Base.create_drafts_table
|
43
|
+
end
|
44
|
+
end
|
45
|
+
```
|
46
|
+
|
47
|
+
Then in the Redmine directory run:
|
48
|
+
```
|
49
|
+
$ rake redmine:plugins:migrate
|
50
|
+
```
|
51
|
+
|
52
|
+
Next, add `up_acts_as_draftable` to a model for which you want to save drafts:
|
53
|
+
```ruby
|
54
|
+
class Message < ActiveRecord::Base
|
55
|
+
up_acts_as_draftable
|
56
|
+
end
|
57
|
+
```
|
58
|
+
|
59
|
+
And that's it for the preparation, now you're ready to make use of drafts:
|
60
|
+
```ruby
|
61
|
+
# You can save message as a draft.
|
62
|
+
Message.new(subject: 'foo').save_draft
|
63
|
+
|
64
|
+
# And later restore message from the draft.
|
65
|
+
draft = Message.drafts(nil).last
|
66
|
+
message = draft.restore
|
67
|
+
puts message.subject
|
68
|
+
# => foo
|
69
|
+
|
70
|
+
# Draft can be overwritten.
|
71
|
+
message.content = 'bar'
|
72
|
+
puts message.save_draft
|
73
|
+
# => true
|
74
|
+
|
75
|
+
# You can also save draft linked to a particular user.
|
76
|
+
Message.new(subject: 'baz').save_draft(user: current_user)
|
77
|
+
|
78
|
+
# And restore message from some user's draft.
|
79
|
+
user_draft = Message.drafts(current_user).last
|
80
|
+
user_message = user_draft.restore
|
81
|
+
puts user_message.subject
|
82
|
+
# => baz
|
83
|
+
|
84
|
+
# It's also possible to restore a bunch of messages at once.
|
85
|
+
messages = Message.drafts(current_user).restore_all
|
86
|
+
p messages.map(&:subject)
|
87
|
+
# => ["baz"]
|
88
|
+
|
89
|
+
# When a model instance is saved, corresponding draft is removed.
|
90
|
+
puts Message.drafts(current_user).count
|
91
|
+
# => 1
|
92
|
+
user_message.board_id = Board.first.id
|
93
|
+
user_message.save!
|
94
|
+
puts Message.drafts(current_user).count
|
95
|
+
# => 0
|
96
|
+
|
97
|
+
# Drafts will be saved only for new (not persisted) or changed instances.
|
98
|
+
puts Message.new.save_draft
|
99
|
+
# => true
|
100
|
+
persisted = Message.last
|
101
|
+
puts persisted.save_draft
|
102
|
+
# => false
|
103
|
+
persisted.subject = 'other subject'
|
104
|
+
puts persisted.save_draft
|
105
|
+
# => true
|
106
|
+
```
|
107
|
+
|
108
|
+
### Tags
|
109
|
+
This module makes it possible to tag objects.
|
110
|
+
|
111
|
+
First, create a migration:
|
112
|
+
```ruby
|
113
|
+
class CreateTags < Rails.version > '5' ? ActiveRecord::Migration[5.0] : ActiveRecord::Migration
|
114
|
+
def change
|
115
|
+
ActiveRecord::Base.create_taggable_table
|
116
|
+
end
|
117
|
+
end
|
118
|
+
```
|
119
|
+
|
120
|
+
Then in the Redmine directory run:
|
121
|
+
```
|
122
|
+
$ rake redmine:plugins:migrate
|
123
|
+
```
|
124
|
+
|
125
|
+
Next, add `up_acts_as_taggable` to a model for which you want to provide tags:
|
126
|
+
```ruby
|
127
|
+
class Contact < ActiveRecord::Base
|
128
|
+
up_acts_as_taggable
|
129
|
+
end
|
130
|
+
```
|
131
|
+
|
132
|
+
TODO: Add examples of usage.
|
133
|
+
|
134
|
+
### Viewings
|
135
|
+
This module allows you to count views for some ActiveRecord model instances.
|
136
|
+
|
137
|
+
To count views you'll need to create a migration:
|
138
|
+
```ruby
|
139
|
+
class CreateViewings < Rails.version > '5' ? ActiveRecord::Migration[5.0] : ActiveRecord::Migration
|
140
|
+
def change
|
141
|
+
ActiveRecord::Base.create_viewings_table
|
142
|
+
end
|
143
|
+
end
|
144
|
+
```
|
145
|
+
|
146
|
+
To apply it, run the following in the Redmine directory:
|
147
|
+
```
|
148
|
+
$ rake redmine:plugins:migrate
|
149
|
+
```
|
150
|
+
|
151
|
+
Then add `up_acts_as_viewed` to a model for which you want to count views.
|
152
|
+
```ruby
|
153
|
+
class Question < ActiveRecord::Base
|
154
|
+
up_acts_as_viewed
|
155
|
+
end
|
156
|
+
```
|
157
|
+
|
158
|
+
TODO: Provide some usage examples.
|
159
|
+
|
160
|
+
### Votes
|
161
|
+
With this module you can make your models votable and allow users to vote.
|
162
|
+
|
163
|
+
As always, create a migration first:
|
164
|
+
```ruby
|
165
|
+
class CreateVotes < Rails.version > '5' ? ActiveRecord::Migration[5.0] : ActiveRecord::Migration
|
166
|
+
def change
|
167
|
+
ActiveRecord::Base.create_votable_table
|
168
|
+
end
|
169
|
+
end
|
170
|
+
```
|
171
|
+
|
172
|
+
Then apply it by running the following command in the Redmine directory:
|
173
|
+
```
|
174
|
+
$ rake redmine:plugins:migrate
|
175
|
+
```
|
176
|
+
|
177
|
+
To make a model votable, add `up_acts_as_votable` to it:
|
178
|
+
```ruby
|
179
|
+
class Question < ActiveRecord::Base
|
180
|
+
up_acts_as_votable
|
181
|
+
end
|
182
|
+
```
|
183
|
+
|
184
|
+
TODO: Write about `up_acts_as_voter` and add usage examples.
|
185
|
+
|
186
|
+
|
187
|
+
## Development
|
188
|
+
|
189
|
+
If you're planning to extend this gem, you will need to install development
|
190
|
+
dependencies. To do this, execute the following command in the project's
|
191
|
+
directory:
|
192
|
+
```
|
193
|
+
$ bundle install
|
194
|
+
```
|
195
|
+
|
196
|
+
After that you'll be able to run tests:
|
197
|
+
```
|
198
|
+
$ bundle exec rake test
|
199
|
+
```
|
200
|
+
|
201
|
+
SQLite in-memory database will be used by default, which is the fastest way to run tests. To run them using different database adapters, set `DB` environment variable to one of the available values — `mysql`, `postgresql`, `sqlite`. For example, to use PostgreSQL, invoke tests like so:
|
202
|
+
```
|
203
|
+
$ bundle exec rake test DB=postgresql
|
204
|
+
```
|
data/Rakefile
ADDED
@@ -0,0 +1,26 @@
|
|
1
|
+
class RedmineupController < ApplicationController
|
2
|
+
layout 'admin'
|
3
|
+
|
4
|
+
before_action :require_admin
|
5
|
+
require_sudo_mode :settings if respond_to?(:require_sudo_mode)
|
6
|
+
|
7
|
+
def settings
|
8
|
+
@section = Redmineup::Settings::SECTIONS[params[:id]]
|
9
|
+
return render_404 unless @section
|
10
|
+
|
11
|
+
if request.post?
|
12
|
+
setting =
|
13
|
+
if params[:settings].present?
|
14
|
+
params[:settings].respond_to?(:to_unsafe_hash) ? params[:settings].to_unsafe_hash : params[:settings]
|
15
|
+
else
|
16
|
+
{}
|
17
|
+
end
|
18
|
+
Redmineup::Settings.apply = setting
|
19
|
+
flash[:notice] = l(:notice_successful_update)
|
20
|
+
redirect_to redmineup_settings_path(@section[:id])
|
21
|
+
else
|
22
|
+
@settings = Redmineup::Settings.values
|
23
|
+
end
|
24
|
+
@section_tabs = Redmineup::Settings::SECTIONS.map { |_n, s| { name: s[:id], partial: s[:partial], label: s[:label] } }
|
25
|
+
end
|
26
|
+
end
|
@@ -0,0 +1,34 @@
|
|
1
|
+
<ul class="cal">
|
2
|
+
<li scope="col" title="<%= l(:label_week) %>" class="calhead week-number"></li>
|
3
|
+
<% 7.times do |i| %>
|
4
|
+
<li scope="col" class="calhead"><%= day_name((calendar.first_wday + i) % 7) %></li>
|
5
|
+
<% end %>
|
6
|
+
<% calendar.format_month.each_slice(7) do |week| %>
|
7
|
+
<li class='week-number'>
|
8
|
+
<span class="label-week"><%= l(:label_week) %></span> <%= calendar.week_number week.first %>
|
9
|
+
</li>
|
10
|
+
<% week.each do |day| %>
|
11
|
+
<li class="<%= calendar.day_css_classes day %> calbody">
|
12
|
+
<p class="day-num"><%= day.day %>
|
13
|
+
<span class="abbr-day">(<%= abbr_day_name(day.cwday) %>)</span>
|
14
|
+
</p>
|
15
|
+
<% calendar.events_on(day).each do |i| %>
|
16
|
+
<% if i.is_a? Issue %>
|
17
|
+
<%= tag.div class: [ i.css_classes, 'tooltip hascontextmenu', starting: day == i.start_date, ending: day == i.due_date] do %>
|
18
|
+
<%= "#{i.project} -" unless @project && @project == i.project %>
|
19
|
+
<%= link_to_issue i, :truncate => 30 %>
|
20
|
+
<span class="tip"><%= render_issue_tooltip i %></span>
|
21
|
+
<%= check_box_tag 'ids[]', i.id, false, :style => 'display:none;', :id => nil %>
|
22
|
+
<% end %>
|
23
|
+
<% else %>
|
24
|
+
<span class="icon icon-package">
|
25
|
+
<%= "#{i.project} -" unless @project && @project == i.project %>
|
26
|
+
<%= link_to_version i %>
|
27
|
+
</span>
|
28
|
+
<% end %>
|
29
|
+
<% end %>
|
30
|
+
</li>
|
31
|
+
<% end %>
|
32
|
+
<% end %>
|
33
|
+
</ul>
|
34
|
+
<%= context_menu %>
|
@@ -0,0 +1,44 @@
|
|
1
|
+
<p>
|
2
|
+
<label for="cb_settings_disable_taxes"><%= l(:label_redmineup_disable_taxes) %></label>
|
3
|
+
<%= hidden_field_tag 'settings[disable_taxes]', '0' %>
|
4
|
+
<%= check_box_tag 'settings[disable_taxes]', 1, Redmineup::Settings::Money.disable_taxes?, id: 'cb_settings_disable_taxes' %>
|
5
|
+
</p>
|
6
|
+
|
7
|
+
<span id="tax_data">
|
8
|
+
<p>
|
9
|
+
<label><%= l(:label_redmineup_default_tax) %></label>
|
10
|
+
<%= text_field_tag 'settings[default_tax]', Redmineup::Settings::Money.default_tax, size: 6, maxlength: 5 %> %
|
11
|
+
</p>
|
12
|
+
|
13
|
+
<p>
|
14
|
+
<label><%= l(:label_redmineup_tax_type) %></label>
|
15
|
+
<%= select_tag 'settings[tax_type]', options_for_select([[l(:label_redmineup_tax_type_exclusive), Redmineup::Settings::Money::TAX_TYPE_EXCLUSIVE],
|
16
|
+
[l(:label_redmineup_tax_type_inclusive), Redmineup::Settings::Money::TAX_TYPE_INCLUSIVE]],
|
17
|
+
@settings['tax_type']) %>
|
18
|
+
</p>
|
19
|
+
</span>
|
20
|
+
|
21
|
+
<p>
|
22
|
+
<label><%= l(:label_redmineup_default_currency) %></label>
|
23
|
+
<%= select_tag 'settings[default_currency]', options_for_select(all_currencies.insert(0, ['', '']), Redmineup::Settings::Money.default_currency) %>
|
24
|
+
</p>
|
25
|
+
|
26
|
+
<p>
|
27
|
+
<label><%= l(:label_redmineup_major_currencies) %></label>
|
28
|
+
<%= text_field_tag 'settings[major_currencies]', Redmineup::Settings::Money.major_currencies.join(', '), size: 40 %>
|
29
|
+
<br>
|
30
|
+
<em class="info"><%= l(:text_comma_separated) %></em>
|
31
|
+
</p>
|
32
|
+
|
33
|
+
<p>
|
34
|
+
<label><%= l(:label_redmineup_thousands_delimiter) %></label>
|
35
|
+
<%= select_tag 'settings[thousands_delimiter]', options_for_select([["9 999", " "],
|
36
|
+
["9,999", ","],
|
37
|
+
["9.999", "."]], Redmineup::Settings::Money.thousands_delimiter) %>
|
38
|
+
</p>
|
39
|
+
|
40
|
+
<p>
|
41
|
+
<label><%= l(:label_redmineup_decimal_separator) %></label>
|
42
|
+
<%= select_tag 'settings[decimal_separator]', options_for_select([["0.00", "."],
|
43
|
+
["0,00", ","]], Redmineup::Settings::Money.decimal_separator) %>
|
44
|
+
</p>
|
@@ -0,0 +1,10 @@
|
|
1
|
+
<%= title l(:label_redmineup_settings) %>
|
2
|
+
|
3
|
+
<div id="settings">
|
4
|
+
<%= form_tag({ action: 'settings', id: @section[:id] }) do %>
|
5
|
+
<div class="box tabular settings">
|
6
|
+
<%= render partial: 'money' %>
|
7
|
+
</div>
|
8
|
+
<%= submit_tag l(:button_apply) %>
|
9
|
+
<% end %>
|
10
|
+
</div>
|
@@ -0,0 +1,50 @@
|
|
1
|
+
# This is a sample build configuration for Ruby.
|
2
|
+
# Check our guides at https://confluence.atlassian.com/x/8r-5Mw for more examples.
|
3
|
+
# Only use spaces to indent your .yml configuration.
|
4
|
+
# -----
|
5
|
+
# You can specify a custom docker image from Docker Hub as your build environment.
|
6
|
+
|
7
|
+
pipelines:
|
8
|
+
default:
|
9
|
+
- parallel:
|
10
|
+
- step:
|
11
|
+
name: 2.4.1 ruby
|
12
|
+
image: ruby:2.4.1
|
13
|
+
script:
|
14
|
+
- sed -i "s/'sqlite3'/'sqlite3', '~> 1.3.6'/g" redmineup.gemspec
|
15
|
+
- sed -i "s/'mysql2'/'mysql2', '~> 0.4.0'/g" redmineup.gemspec
|
16
|
+
- sed -i "s/'rubyzip'/'rubyzip'\n spec.add_runtime_dependency 'loofah', '~>2.19.1'/g" redmineup.gemspec
|
17
|
+
- bundle install
|
18
|
+
- bundle exec rake test DB=sqlite
|
19
|
+
- bundle exec rake test DB=postgresql
|
20
|
+
- bundle exec rake test DB=mysql
|
21
|
+
services:
|
22
|
+
- mysql
|
23
|
+
- postgres
|
24
|
+
- step:
|
25
|
+
name: 3.2.2 ruby
|
26
|
+
image: ruby:3.2.2
|
27
|
+
script:
|
28
|
+
- sed -i "s/'sqlite3'/'sqlite3', '~> 1.4.4'/g" redmineup.gemspec
|
29
|
+
- sed -i "s/'mysql2'/'mysql2', '~> 0.5.0'/g" redmineup.gemspec
|
30
|
+
- sed -i "s/'rubyzip'/'rubyzip'\n spec.add_runtime_dependency 'loofah', '~>2.19.1'/g" redmineup.gemspec
|
31
|
+
- bundle install
|
32
|
+
- bundle exec rake test DB=sqlite
|
33
|
+
- bundle exec rake test DB=postgresql
|
34
|
+
- bundle exec rake test DB=mysql
|
35
|
+
services:
|
36
|
+
- mysql
|
37
|
+
- postgres
|
38
|
+
|
39
|
+
definitions:
|
40
|
+
services:
|
41
|
+
mysql:
|
42
|
+
image: mysql:5.7
|
43
|
+
environment:
|
44
|
+
MYSQL_DATABASE: redmineup_test
|
45
|
+
MYSQL_ROOT_PASSWORD: password
|
46
|
+
postgres:
|
47
|
+
image: postgres
|
48
|
+
environment:
|
49
|
+
POSTGRES_DB: redmineup_test
|
50
|
+
POSTGRES_PASSWORD: password
|