decidim 0.23.6 → 0.24.0.rc1
Sign up to get free protection for your applications and to get access to all the features.
Potentially problematic release.
This version of decidim might be problematic. Click here for more details.
- checksums.yaml +4 -4
- data/Rakefile +1 -0
- data/docs/README.adoc +74 -0
- data/docs/antora.yml +7 -0
- data/docs/modules/configure/pages/environment_variables.adoc +69 -0
- data/docs/modules/configure/pages/index.adoc +16 -0
- data/docs/modules/configure/pages/initializer.adoc +376 -0
- data/docs/modules/customize/assets/images/header-snippet.png +0 -0
- data/docs/modules/customize/assets/images/menu.png +0 -0
- data/docs/modules/customize/assets/images/organization-colors.png +0 -0
- data/docs/modules/customize/pages/authorizations.adoc +22 -0
- data/docs/{customization/code.md → modules/customize/pages/code.adoc} +12 -9
- data/docs/{customization/gemfile.md → modules/customize/pages/gemfile.adoc} +5 -4
- data/docs/modules/customize/pages/images.adoc +7 -0
- data/docs/modules/customize/pages/javascript.adoc +59 -0
- data/docs/modules/customize/pages/menu.adoc +25 -0
- data/docs/modules/customize/pages/oauth.adoc +33 -0
- data/docs/modules/customize/pages/styles.adoc +64 -0
- data/docs/modules/customize/pages/texts.adoc +30 -0
- data/docs/modules/customize/pages/users_registration_mode.adoc +17 -0
- data/docs/{customization/views.md → modules/customize/pages/views.adoc} +13 -13
- data/docs/modules/develop/assets/images/barcelona.png +0 -0
- data/docs/modules/develop/assets/images/helsinki.png +0 -0
- data/docs/modules/develop/assets/images/indices.png +0 -0
- data/docs/{advanced/api.md → modules/develop/pages/api.adoc} +2 -2
- data/docs/{advanced/authorship.md → modules/develop/pages/authorable.adoc} +5 -5
- data/docs/modules/develop/pages/c4_component.adoc +91 -0
- data/docs/modules/develop/pages/c4_container.adoc +42 -0
- data/docs/modules/develop/pages/c4_context.adoc +35 -0
- data/docs/{advanced/components.md → modules/develop/pages/components.adoc} +47 -10
- data/docs/{advanced/content_blocks.md → modules/develop/pages/content_blocks.adoc} +16 -13
- data/docs/{advanced/content_processors.md → modules/develop/pages/content_processors.adoc} +25 -19
- data/docs/modules/develop/pages/data-picker.adoc +85 -0
- data/docs/modules/develop/pages/deploy.adoc +15 -0
- data/docs/modules/develop/pages/docker.adoc +12 -0
- data/docs/{advanced/embeddable.md → modules/develop/pages/embeddable.adoc} +6 -6
- data/docs/{advanced/endorsable.md → modules/develop/pages/endorsable.adoc} +31 -25
- data/docs/{advanced/fixing_locales.md → modules/develop/pages/fixing_locales.adoc} +36 -23
- data/docs/{advanced/followers.md → modules/develop/pages/followable.adoc} +9 -8
- data/docs/modules/develop/pages/guide.adoc +16 -0
- data/docs/modules/develop/pages/guide_architecture.adoc +17 -0
- data/docs/modules/develop/pages/guide_changelog.adoc +8 -0
- data/docs/modules/develop/pages/guide_commands.adoc +86 -0
- data/docs/modules/develop/pages/guide_development_app.adoc +44 -0
- data/docs/modules/develop/pages/guide_development_with_custom_seed_data.adoc +31 -0
- data/docs/modules/develop/pages/guide_development_with_localhost_ssl.adoc +63 -0
- data/docs/modules/develop/pages/guide_example_apps.adoc +59 -0
- data/docs/modules/develop/pages/guide_git_conventions.adoc +75 -0
- data/docs/modules/develop/pages/guide_github_projects.adoc +42 -0
- data/docs/modules/develop/pages/guide_semver.adoc +7 -0
- data/docs/{advanced/how_to_fix_metrics.md → modules/develop/pages/how_to_fix_metrics.adoc} +76 -59
- data/docs/modules/develop/pages/machine_translations.adoc +42 -0
- data/docs/modules/develop/pages/managing_translations_i18n.adoc +24 -0
- data/docs/modules/develop/pages/maps.adoc +499 -0
- data/docs/modules/develop/pages/metrics.adoc +119 -0
- data/docs/{advanced/modules.md → modules/develop/pages/modules.adoc} +16 -6
- data/docs/{advanced/newsletter_templates.md → modules/develop/pages/newsletter_templates.adoc} +12 -10
- data/docs/{advanced/notifications.md → modules/develop/pages/notifications.adoc} +40 -38
- data/docs/{advanced/open-data.md → modules/develop/pages/open-data.adoc} +4 -3
- data/docs/modules/develop/pages/permissions.adoc +92 -0
- data/docs/{advanced/profiling.md → modules/develop/pages/profiling.adoc} +15 -12
- data/docs/modules/develop/pages/releases.adoc +148 -0
- data/docs/modules/develop/pages/reportable.adoc +31 -0
- data/docs/modules/develop/pages/security.adoc +33 -0
- data/docs/{advanced/share_tokens.md → modules/develop/pages/share_tokens.adoc} +18 -14
- data/docs/{advanced/templates.md → modules/develop/pages/templates.adoc} +14 -12
- data/docs/{advanced/testing.md → modules/develop/pages/testing.adoc} +21 -20
- data/docs/{advanced/activity_log.md → modules/develop/pages/traceable.adoc} +31 -26
- data/docs/modules/develop/pages/turbolinks.adoc +7 -0
- data/docs/{advanced/view_hooks.md → modules/develop/pages/view_hooks.adoc} +29 -23
- data/docs/modules/develop/pages/view_models_aka_cells.adoc +105 -0
- data/docs/modules/install/pages/checklist.adoc +39 -0
- data/docs/modules/install/pages/index.adoc +148 -0
- data/docs/{manual-installation.md → modules/install/pages/manual.adoc} +54 -42
- data/docs/modules/install/pages/update.adoc +95 -0
- data/docs/{services/activejob.md → modules/services/pages/activejob.adoc} +3 -3
- data/docs/modules/services/pages/elections_bulletin_board.adoc +52 -0
- data/docs/{services/etherpad.md → modules/services/pages/etherpad.adoc} +15 -12
- data/docs/modules/services/pages/maps.adoc +311 -0
- data/docs/modules/services/pages/smtp.adoc +10 -0
- data/docs/modules/services/pages/social_providers.adoc +122 -0
- data/lib/decidim/gem_manager.rb +5 -5
- data/lib/decidim/version.rb +1 -1
- metadata +137 -100
- data/README.md +0 -157
- data/docs/advanced/add_authorizable_action.md +0 -63
- data/docs/advanced/adding_fixtures_aka_dummy_content.md +0 -9
- data/docs/advanced/data-picker.md +0 -83
- data/docs/advanced/deploy.md +0 -9
- data/docs/advanced/how_to_create_a_module.md +0 -9
- data/docs/advanced/machine_translation_service.md +0 -12
- data/docs/advanced/managing_translations_i18n.md +0 -24
- data/docs/advanced/metrics.md +0 -114
- data/docs/advanced/permissions.md +0 -23
- data/docs/advanced/releases.md +0 -114
- data/docs/advanced/tradeoffs.md +0 -14
- data/docs/advanced/view_models_aka_cells.md +0 -99
- data/docs/checklist.md +0 -55
- data/docs/customization/authorizations.md +0 -5
- data/docs/customization/images.md +0 -7
- data/docs/customization/javascript.md +0 -9
- data/docs/customization/machine_translations.md +0 -30
- data/docs/customization/maps.md +0 -610
- data/docs/customization/oauth.md +0 -50
- data/docs/customization/styles.md +0 -11
- data/docs/customization/texts.md +0 -27
- data/docs/customization/users_registration_mode.md +0 -17
- data/docs/development_guide.md +0 -166
- data/docs/getting_started.md +0 -191
- data/docs/possible_flows_for_proposal.png +0 -0
- data/docs/services/analytics.md +0 -23
- data/docs/services/elections_bulletin_board.md +0 -38
- data/docs/services/maps.md +0 -362
- data/docs/services/social_providers.md +0 -98
data/docs/customization/oauth.md
DELETED
@@ -1,50 +0,0 @@
|
|
1
|
-
# OAuth
|
2
|
-
|
3
|
-
Decidim is both and OAuth client (via [omniauth](https://github.com/omniauth/omniauth)) and an OAuth provider (via [doorkeeper](https://github.com/doorkeeper-gem/doorkeeper)).
|
4
|
-
|
5
|
-
Check the [Social Providers](https://github.com/decidim/decidim/blob/master/docs/services/social_providers.md) document to check the client configuration.
|
6
|
-
|
7
|
-
## Decidim as an OAuth provider
|
8
|
-
|
9
|
-
You can use your own Decidim application to log in to other applications that support OAuth 2. To do it you need to create an OAuth application from the admin panel for each client that wants to use Decidim.
|
10
|
-
|
11
|
-
To create a new OAuth application you need:
|
12
|
-
|
13
|
-
* Name: The name of the client application that will be shown to the user when authorizing it from your Decidim application.
|
14
|
-
* Redirect URI: The URI where the Decidim application should redirect the user after authorizing it. It is usually where you handle the OAUth callback in your client application. If you're using `omniauth-decidim` the value should be `YOUR_APPLICATION_HOST/users/auth/decidim/callback`.
|
15
|
-
* Organization name: The name of the organization that owns the client application.
|
16
|
-
* Organization URL: The URL of the organization that owns the client application.
|
17
|
-
* Organization logo: An image of the logo of the organization that owns the client application.
|
18
|
-
|
19
|
-
All the organization data will be used during the authorization process so the users know to who they're giving their data.
|
20
|
-
|
21
|
-
Once you've created your application you'll get the settings to setup your client.
|
22
|
-
|
23
|
-
Check [omniauth-decidim](https://github.com/decidim/omniauth-decidim) in order to configure your client application.
|
24
|
-
|
25
|
-
## Performing more actions on omniauth registration
|
26
|
-
|
27
|
-
Some times, there is the need to perform more actions than just creating a user on registration, this is why `CreateOmniauthRegistration` command publishes a `"decidim.user.omniauth_registration` event after registration so that developers can subscribe to it and perform other actions like user verification or alike.
|
28
|
-
|
29
|
-
This event comes with the following payload:
|
30
|
-
|
31
|
-
* user_id: The id for the registered User.
|
32
|
-
* identity_id: The id for the social Identity.
|
33
|
-
* provider: The name for the social provider.
|
34
|
-
* uid: OAuth's uid
|
35
|
-
* email: User's email.
|
36
|
-
* name: User's name.
|
37
|
-
* nickname: User's nickname after being normalized.
|
38
|
-
* avatar_url: Avatar's url, if any.
|
39
|
-
* raw_data: The raw hash received directly from the Omniauth gem.
|
40
|
-
|
41
|
-
To be notified after a registration one should subscribe to the event, in the passed block the after registration code should be implemented:
|
42
|
-
|
43
|
-
```ruby
|
44
|
-
ActiveSupport::Notifications.subscribe "decidim.user.omniauth_registration" do |name, started, finished, unique_id, data|
|
45
|
-
puts "the data: #{data.inspect}"
|
46
|
-
IdCatMobilVerificationJob.perform_later(data[:raw_data])
|
47
|
-
end
|
48
|
-
```
|
49
|
-
|
50
|
-
It is a good practice to delegate the required implementation to a Job to bring a fastest response to the user, also it will avoid that crashes in this code to propagate to the registration process.
|
@@ -1,11 +0,0 @@
|
|
1
|
-
# CSS Styles with SASS
|
2
|
-
|
3
|
-
One of the first things you’ll want to do after you install Decidim is applying your own corporative image. To do this, you can go to app/assets/stylesheets/application.css.sass on your generated application with your own colors. There you can override any class using CSS with SASS.
|
4
|
-
|
5
|
-
In [decidim-core/app/assets/stylesheets/decidim/_variables.scss](https://github.com/decidim/decidim/blob/master/decidim-core/app/assets/stylesheets/decidim/_variables.scss) you can find the `variables` that can be overriden in your `sass`.
|
6
|
-
|
7
|
-
We use [SASS, with SCSS syntax](http://sass-lang.com/guide) as CSS preprocessor.
|
8
|
-
|
9
|
-
## **Accesibility**
|
10
|
-
|
11
|
-
To maintain accesibility level, if you add new colors use a [Color contrast checker](http://webaim.org/resources/contrastchecker/) (WCAG AA is mandatory, WCAG AAA is recommended)
|
data/docs/customization/texts.md
DELETED
@@ -1,27 +0,0 @@
|
|
1
|
-
# Custom Texts
|
2
|
-
|
3
|
-
## Using custom locales
|
4
|
-
|
5
|
-
You can change most of the texts through the Administration panel.
|
6
|
-
|
7
|
-
If you want to change a given text that isn’t on the Administration panel, and belongs on Decidim code, you should first find out which key is being used. For instance, you want to change the home page text where it says "Let's build a more open, transparent and collaborative society.", you would search the text (using [github](https://github.com/decidim/decidim/search?utf8=%E2%9C%93&q=%22Let%27s+build+a+more+open%2C+transparent+and+collaborative+society.%22&type= ) or grep) and then you would extract that key and their parents. On this case it’d be:
|
8
|
-
|
9
|
-
```yml
|
10
|
-
en:
|
11
|
-
pages:
|
12
|
-
home:
|
13
|
-
footer_sub_hero:
|
14
|
-
footer_sub_hero_body: Let's build a more open, transparent and collaborative society.<br /> Join, participate and decide.
|
15
|
-
```
|
16
|
-
|
17
|
-
You need to create a file for this translation as [Ruby on Rails i18n documentation](http://guides.rubyonrails.org/i18n.html) says, for instance config/locales/home.en.yml, you can see a currently working example in [this PR](https://github.com/AjuntamentdeBarcelona/decidim-barcelona/pull/206).
|
18
|
-
|
19
|
-
## Using external module
|
20
|
-
|
21
|
-
There is an external module [decidim-term_customizer](https://github.com/mainio/decidim-module-term_customizer), according with the project README:
|
22
|
-
|
23
|
-
> The module allows administrators to add "translation sets" through the admin panel which contain customized terms for any module in the system. These sets can be applied against different scopes within the system, e.g. the whole system, participatory space scope (e.g. all participatory processes or a specific participatory process) or a specific component within a participatory space.
|
24
|
-
|
25
|
-
To implement this on your decidim installation follow the [documentation in the external module](https://github.com/mainio/decidim-module-term_customizer/blob/master/README.md).
|
26
|
-
|
27
|
-
You can see an example in [this PR](https://github.com/decidim/metadecidim/pull/38).
|
@@ -1,17 +0,0 @@
|
|
1
|
-
# Users registration mode
|
2
|
-
|
3
|
-
Decidim allows organizations to choose one of the three modes related to the registration and login of users. This can be configured by the system user, in the organization manager zone.
|
4
|
-
|
5
|
-
## Allow users to register and login
|
6
|
-
|
7
|
-
This is the default mode. It enables the registration form and allow anyone to create a new account and log in.
|
8
|
-
|
9
|
-
## Don't allow users to register, but allow existing users to login
|
10
|
-
|
11
|
-
This mode disables the registration form, but allows existing users to log in. This mode could be useful for organizations with a closed census that do not want to offer other people to register.
|
12
|
-
|
13
|
-
Note: if you have configured [social providers](services/social_providers.md), users will still be able to sign in with external accounts even when this mode is configured.
|
14
|
-
|
15
|
-
## Access only can be done with external accounts
|
16
|
-
|
17
|
-
This mode disables the registration form and the login form. With this mode, users only can access through [social providers](services/social_providers.md), so it is recommended to configure at least one of them. This can be useful when an organization needs to allow participation only to users of another application of the organization itself.
|
data/docs/development_guide.md
DELETED
@@ -1,166 +0,0 @@
|
|
1
|
-
# Developing Decidim
|
2
|
-
|
3
|
-
## Create a development_app
|
4
|
-
|
5
|
-
In order to start developing you will need what is called a `development_app`. This is nearly the same as a new Decidim app (that you can create with `decidim app_name`) but with a Gemfile pre-configured for local development and some other small config modifications.
|
6
|
-
You need it in order to have a Rails application configured to lookup Decidim modules from your filesystem. This way changes in your modules will be directly observed by this `development_app`.
|
7
|
-
|
8
|
-
You can create a `development_app` from inside the project's root folder with the command:
|
9
|
-
|
10
|
-
```console
|
11
|
-
git clone https://github.com/decidim/decidim.git
|
12
|
-
cd decidim
|
13
|
-
bundle install
|
14
|
-
bundle exec rake development_app
|
15
|
-
cd development_app
|
16
|
-
```
|
17
|
-
|
18
|
-
A development_app/ entry appears in the .gitignore file, so you don't have to worry about commiting the development app by mistake.
|
19
|
-
|
20
|
-
On creation, this steps are automatically invoked by the generator:
|
21
|
-
|
22
|
-
- create a `config/database.yml`
|
23
|
-
- `bundle install`
|
24
|
-
- `bin/rails decidim:upgrade`
|
25
|
-
- `bin/rails db:migrate db:seed`
|
26
|
-
|
27
|
-
If the default database.yml does not suit your needs you can always configure it at your will and run this steps manually.
|
28
|
-
|
29
|
-
Once created you are ready to:
|
30
|
-
|
31
|
-
- `bin/rails s`
|
32
|
-
|
33
|
-
## GitFlow Branching model
|
34
|
-
|
35
|
-
The Decidim respository follows the GitFlow branching model. There are good documentations on it at:
|
36
|
-
|
37
|
-
- the original post: https://nvie.com/posts/a-successful-git-branching-model/
|
38
|
-
- provided by Atlassian: https://www.atlassian.com/git/tutorials/comparing-workflows/gitflow-workflow.
|
39
|
-
|
40
|
-
This model introduces the `develop` branch as a kind of queue for new features to enter into the next release.
|
41
|
-
|
42
|
-
In summary, Decidim developers that work on `feature/...` or `fix/...` branches will branch off from `develop` and must be merged back into `develop`.
|
43
|
-
|
44
|
-
Then, to start a new feature branch off from `develop` in the following way:
|
45
|
-
|
46
|
-
```bash
|
47
|
-
git checkout develop
|
48
|
-
git checkout -b feature/xxx
|
49
|
-
```
|
50
|
-
|
51
|
-
Implement the feature, and open a Pull Request as normal, but against `develop` branch. As this is the most common operation, `develop` is the default branch instead of `master`.
|
52
|
-
|
53
|
-
### Naming Decidim branches
|
54
|
-
|
55
|
-
We would like to have all branches following this namings:
|
56
|
-
|
57
|
-
| Branch prefix | Comment |
|
58
|
-
| -------- | -------- |
|
59
|
-
| chore/ | Internal work. For instance, automatisms, etc. No production code change. |
|
60
|
-
| ci/ | For continous integration related tasks. No production code change. |
|
61
|
-
| deps/ | For dependency management tasks. |
|
62
|
-
| doc/ | For changes to the documentation. |
|
63
|
-
| feature/ | For new features for the users or for the Decidim command. |
|
64
|
-
| fix/ | For feature bugfixing. |
|
65
|
-
| release/ | With MAYOR.MINOR-stable. For instance, release/0.22-stable |
|
66
|
-
| refactor/ | For refactorings related with production code. |
|
67
|
-
| test/ | When adding missing tests, refactoring tests, improving coverage, etc. |
|
68
|
-
| backport/ | We only offer support for the last mayor version. |
|
69
|
-
|
70
|
-
## Git commit messages and Pull Request titles
|
71
|
-
|
72
|
-
We recommend following [this guide](https://chris.beams.io/posts/git-commit/) for making good git commit messages. It also applies to Pull Request titles. The summary is:
|
73
|
-
|
74
|
-
1. Separate subject from body with a blank line
|
75
|
-
1. Limit the subject line to 50 characters
|
76
|
-
1. Capitalize the subject line
|
77
|
-
1. Do not end the subject line with a period
|
78
|
-
1. Use the imperative mood in the subject line
|
79
|
-
1. Wrap the body at 72 characters
|
80
|
-
1. Use the body to explain what and why vs. how
|
81
|
-
|
82
|
-
## During development
|
83
|
-
|
84
|
-
When creating new migrations in Decidim's modules, you will need to "apply" this migrations to your development_app. The way to do this is by copying the migration from your module into the db/migrate dir of your development_app. Luckily we already have a script that automates this: it copies all missing migrations in development_app/db/migrate. The command is:
|
85
|
-
|
86
|
-
```console
|
87
|
-
bin/rails decidim:upgrade
|
88
|
-
```
|
89
|
-
|
90
|
-
Anyway we recommend re-creating your development_app every once in a while.
|
91
|
-
|
92
|
-
## Useful commands
|
93
|
-
|
94
|
-
### erb-lint
|
95
|
-
|
96
|
-
We use erblint gem to ensure homogeneous formatting of erb files.
|
97
|
-
|
98
|
-
```console
|
99
|
-
bundle exec erblint --lint-all --autocorrect
|
100
|
-
# shortest
|
101
|
-
bundle exec erblint --lint-all -a
|
102
|
-
# even shortest
|
103
|
-
bundle exec erblint -la -a
|
104
|
-
```
|
105
|
-
|
106
|
-
### I18n
|
107
|
-
|
108
|
-
We use i18n-tasks gem to keep translations ordered and without missing/unused keys.
|
109
|
-
|
110
|
-
```console
|
111
|
-
# from the root of the project
|
112
|
-
bundle exec i18n-tasks normalize --locales en
|
113
|
-
```
|
114
|
-
|
115
|
-
### JavaScript linter
|
116
|
-
|
117
|
-
[eslint](https://eslint.org/docs/user-guide/command-line-interface) and [tslint](https://palantir.github.io/tslint/) are used to ensure homogeneous formatting of JavaScript code.
|
118
|
-
|
119
|
-
To lint and try to fix linting errors, run:
|
120
|
-
|
121
|
-
```console
|
122
|
-
npm run lint --fix
|
123
|
-
```
|
124
|
-
|
125
|
-
### Stylelinter
|
126
|
-
|
127
|
-
[stylelint](https://stylelint.io/) is a CSS linter and fixer that helps to avoid errors and enforce consistent conventions in the stylesheets. Is an npm package, install it using:
|
128
|
-
|
129
|
-
```console
|
130
|
-
npm install -g stylelint
|
131
|
-
```
|
132
|
-
|
133
|
-
Linting a `.scss` file:
|
134
|
-
|
135
|
-
```console
|
136
|
-
stylelint [path-to-file]
|
137
|
-
```
|
138
|
-
|
139
|
-
With `--fix` option [stylelint](https://stylelint.io/user-guide/cli/#autofixing-errors) will fix as many errors as possible. The fixes are made to the actual source files. All unfixed errors will be reported.
|
140
|
-
|
141
|
-
```console
|
142
|
-
stylelint [path-to-file] --fix
|
143
|
-
```
|
144
|
-
|
145
|
-
### Rubocop
|
146
|
-
|
147
|
-
RuboCop is a code analyzer tool we use at Decidim to enforce our code formatting guidelines.
|
148
|
-
|
149
|
-
```console
|
150
|
-
# Run Rubocop
|
151
|
-
bundle exec rubocop
|
152
|
-
# Run Rubocop and automatically correct offenses
|
153
|
-
bundle exec rubocop -a
|
154
|
-
```
|
155
|
-
|
156
|
-
### Markdown linter
|
157
|
-
|
158
|
-
This project uses [markdownlint](https://github.com/markdownlint/markdownlint) to check markdown files and flag style issues.
|
159
|
-
|
160
|
-
## Good to know
|
161
|
-
|
162
|
-
- There is an application with current designs at: https://decidim-design.herokuapp.com/
|
163
|
-
|
164
|
-
## Testing
|
165
|
-
|
166
|
-
Refer to the [testing](advanced/testing.md) guide.
|
data/docs/getting_started.md
DELETED
@@ -1,191 +0,0 @@
|
|
1
|
-
# Getting started with Decidim
|
2
|
-
|
3
|
-
## What is and what isn't Decidim?
|
4
|
-
|
5
|
-
Decidim is a set of Ruby on Rails engines to create a participatory democracy framework on top of a Ruby on Rails app. This system allows having Decidim code separated from custom code for each installation and still enabling easy updates.
|
6
|
-
|
7
|
-
These libraries are published to Rubygems.org, so you can add Decidim to your Ruby on Rails app as external dependencies.
|
8
|
-
|
9
|
-
If you want to start your own installation of Decidim, you don't need to clone this repo. Keep reading to find out how to install Decidim.
|
10
|
-
|
11
|
-
## Creating your Decidim app
|
12
|
-
|
13
|
-
### A. Recommended: manual installation
|
14
|
-
|
15
|
-
If you know Ruby and have already worked with Ruby on Rails, you
|
16
|
-
need to know that decidim is a gem and a command line that generates
|
17
|
-
an application that consumes this gem 😅.
|
18
|
-
|
19
|
-
The flow is: install gem, generate a Ruby on Rails app, enjoy.
|
20
|
-
|
21
|
-
```console
|
22
|
-
gem install decidim
|
23
|
-
decidim decidim_application
|
24
|
-
```
|
25
|
-
|
26
|
-
You can see the [official manual installation tutorial](/docs/manual-installation.md),
|
27
|
-
and also you have [another manual installation tutorial](https://github.com/Platoniq/decidim-install)
|
28
|
-
made by the nice people of [Platoniq](http://www.platoniq.net/).
|
29
|
-
|
30
|
-
### B. Using installation script [experimental]
|
31
|
-
|
32
|
-
> *Please note that this is **experimental***
|
33
|
-
|
34
|
-
We've made an script for Ubuntu 16.04 LTS and macos sierra 10.2.
|
35
|
-
It's a BETA and as such you should be aware that this could break
|
36
|
-
your environment (if you have any). It'll install rbenv, postgresql,
|
37
|
-
nodejs and install decidim on this directory. It should take 15
|
38
|
-
minutes depending on your network connection.
|
39
|
-
|
40
|
-
```console
|
41
|
-
wget http://get.decidim.org -O install_decidim.bash
|
42
|
-
bash install_decidim.bash
|
43
|
-
```
|
44
|
-
|
45
|
-
Read more about the [installation script](https://github.com/alabs/decidim-install).
|
46
|
-
|
47
|
-
### C. Using Docker [experimental]
|
48
|
-
|
49
|
-
You can also use [docker] && [docker-compose] to develop decidim. You'll
|
50
|
-
need to install those but in exchange you don't need to install any other
|
51
|
-
dependency in your computer, not even Ruby!
|
52
|
-
|
53
|
-
To get started, first clone the decidim repo
|
54
|
-
|
55
|
-
```console
|
56
|
-
git clone https://github.com/decidim/decidim
|
57
|
-
```
|
58
|
-
|
59
|
-
Switch to the cloned folder
|
60
|
-
|
61
|
-
```console
|
62
|
-
cd decidim
|
63
|
-
```
|
64
|
-
|
65
|
-
Then create a development application
|
66
|
-
|
67
|
-
```console
|
68
|
-
d/bundle install
|
69
|
-
d/rake development_app
|
70
|
-
d/rails server -b 0.0.0.0
|
71
|
-
```
|
72
|
-
|
73
|
-
In general, to use the docker development environment, change any instruction in
|
74
|
-
the docs to use its equivalent docker binstub. So for example, instead of
|
75
|
-
running `bundle install`, you would run `d/bundle install`.
|
76
|
-
|
77
|
-
## Initializing your app for local development
|
78
|
-
|
79
|
-
You should now setup your database:
|
80
|
-
|
81
|
-
```console
|
82
|
-
bin/rails db:create db:migrate db:seed
|
83
|
-
```
|
84
|
-
|
85
|
-
This will also create some default data so you can start testing the app:
|
86
|
-
|
87
|
-
* A `Decidim::System::Admin` with email `system@example.org` and password `decidim123456`, to log in at `/system`.
|
88
|
-
* A `Decidim::Organization` named `Decidim Staging`. You probably want to change its name and hostname to match your needs.
|
89
|
-
* A `Decidim::User` acting as an admin for the organization, with email `admin@example.org` and password `decidim123456`.
|
90
|
-
* A `Decidim::User` that also belongs to the organization but it's a regular user, with email `user@example.org` and password `decidim123456`.
|
91
|
-
|
92
|
-
This data won't be created in production environments, if you still want to do it, run: ``` $ SEED=true rails db:setup ```
|
93
|
-
|
94
|
-
You can now start your server!
|
95
|
-
|
96
|
-
```console
|
97
|
-
bin/rails s
|
98
|
-
```
|
99
|
-
|
100
|
-
Visit [http://localhost:3000](http://localhost:3000) to see your app running.
|
101
|
-
|
102
|
-
## Configuration & setup
|
103
|
-
|
104
|
-
Decidim comes pre-configured with some safe defaults, but can be changed through the `config/initializers/decidim.rb` file in your app. Check the comments there or read the comments in [the source file](https://github.com/decidim/decidim/blob/master/decidim-core/lib/decidim/core.rb) (the part with the `config_accessor` calls) for more up-to-date info.
|
105
|
-
|
106
|
-
### Scheduled tasks
|
107
|
-
|
108
|
-
For Decidim to function as expected, there are some background tasks that should be scheduled to be executed regularly.
|
109
|
-
|
110
|
-
- Expired *data portability* files should be removed. To do it, write a `crontab -e` line like: `0 0 * * * cd /Users/you/projects/myrailsapp && /usr/local/bin/rake RAILS_ENV=production decidim:delete_data_portability_files`
|
111
|
-
- *Metrics* also require a cron to be computed nightly. Find more information in the [related documentation](https://github.com/decidim/decidim/blob/master/docs/advanced/metrics.md#Configuration).
|
112
|
-
- *Open Data* is also produced nightly via a scheduled job. Find more information in the [open-data documentation](https://github.com/decidim/decidim/blob/master/docs/advanced/open-data.md).
|
113
|
-
- Registration forms for meetings that have ended should be removed for privacy concerns. To do it, write a `crontab -e` line like: `0 0 * * * cd /Users/you/projects/myrailsapp && /usr/local/bin/rake RAILS_ENV=production decidim_meetings:clean_registration_forms`
|
114
|
-
|
115
|
-
### Further configuration
|
116
|
-
|
117
|
-
We also have other guides on how to configure some extra components:
|
118
|
-
|
119
|
-
* [ActiveJob](https://github.com/decidim/decidim/blob/master/docs/services/activejob.md)
|
120
|
-
* [Analytics](https://github.com/decidim/decidim/blob/master/docs/services/analytics.md): How to enable analytics
|
121
|
-
* [Geocoding](https://github.com/decidim/decidim/blob/master/docs/services/geocoding.md): How to enable geocoding for proposals and meetings
|
122
|
-
* [Social providers integration](https://github.com/decidim/decidim/blob/master/docs/services/social_providers.md): Enable sign up from social networks.
|
123
|
-
|
124
|
-
## Deploy
|
125
|
-
|
126
|
-
Once you've successfully deployed your app to your favorite platform, you'll need to create your `System` user. First you'll need to create your `Decidim::System` user in your production Ruby on Rails console:
|
127
|
-
|
128
|
-
```ruby
|
129
|
-
email = <your email>
|
130
|
-
password = <a secure password>
|
131
|
-
user = Decidim::System::Admin.new(email: email, password: password, password_confirmation: password)
|
132
|
-
user.save!
|
133
|
-
```
|
134
|
-
|
135
|
-
This will create a system user with the email and password you set. We recommend using a random password generator and saving it to a password manager, so you have a more secure login.
|
136
|
-
|
137
|
-
Then, visit the `/system` dashboard and login with the email and passwords you just entered and create your organization. You're done! :tada:
|
138
|
-
|
139
|
-
You can check the [`decidim-system` README file](https://github.com/decidim/decidim/tree/master/decidim-system/README.md) for more info on how organizations work.
|
140
|
-
|
141
|
-
### Seed data in production
|
142
|
-
|
143
|
-
If you want, you can create seed data in production. Run this command in your production console:
|
144
|
-
|
145
|
-
```console
|
146
|
-
SEED=true rails db:seed
|
147
|
-
```
|
148
|
-
|
149
|
-
You'll need to login as system user and edit the host for the organization. Set it to you production host, without the protocol and the port (so if your host is `https://my.host:3001`, you need to write `my.host`).
|
150
|
-
|
151
|
-
## Keeping your app up-to-date
|
152
|
-
|
153
|
-
We keep releasing new versions of Decidim. In order to get the latest one, update your dependencies:
|
154
|
-
|
155
|
-
```console
|
156
|
-
bundle update decidim
|
157
|
-
```
|
158
|
-
|
159
|
-
And make sure you get all the latest migrations:
|
160
|
-
|
161
|
-
```console
|
162
|
-
bin/rails decidim:upgrade
|
163
|
-
bin/rails db:migrate
|
164
|
-
```
|
165
|
-
|
166
|
-
You can also make sure new translations are complete for all languages in your
|
167
|
-
application with:
|
168
|
-
|
169
|
-
```console
|
170
|
-
TARGET_BRANCH=release/0.22-stable bin/rails decidim:check_locales
|
171
|
-
```
|
172
|
-
|
173
|
-
Here the `TARGET_BRANCH` must be the same as the `decidim` dependency in your `Gemfile`.
|
174
|
-
|
175
|
-
Be aware that this task might not be able to detect everything, so make sure you
|
176
|
-
also manually check your application before upgrading.
|
177
|
-
|
178
|
-
## Checklist
|
179
|
-
|
180
|
-
There are several things you need to check before making your putting your application on production. See the [checklist](checklist.md).
|
181
|
-
|
182
|
-
[docker]: https://docs.docker.com/engine/installation/
|
183
|
-
[docker-compose]: https://docs.docker.com/compose/install/
|
184
|
-
|
185
|
-
## Contributing
|
186
|
-
|
187
|
-
We always welcome new contributors of all levels to the project. If you are not confident enough with Ruby or web development you can look for [issues](https://github.com/decidim/decidim/issues) labeled `good first issue` to start contibuting and learning the internals of the project by doing easy jobs.
|
188
|
-
|
189
|
-
We also have a [developer's reference](/docs/development_guide.md) that will help you getting started with your environment and our daily commands, routines, etc.
|
190
|
-
|
191
|
-
Finally, you can also find other ways of helping us on our [contribution guide](/CONTRIBUTING.md).
|