From fa2fabca112efa930e919311162ca3207cbda1e9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Imobach=20Gonz=C3=A1lez=20Sosa?= Date: Tue, 22 Oct 2019 08:58:03 +0100 Subject: [PATCH 1/8] Add Dockerfile for development --- Dockerfile | 14 ++++++++++++++ 1 file changed, 14 insertions(+) create mode 100644 Dockerfile diff --git a/Dockerfile b/Dockerfile new file mode 100644 index 00000000..5f721248 --- /dev/null +++ b/Dockerfile @@ -0,0 +1,14 @@ +FROM opensuse/leap:42.3 + +RUN zypper --gpg-auto-import-keys --non-interactive in --no-recommends \ + ruby ruby-devel ruby2.1-rubygem-bundler libxml2-devel libxslt-devel \ + postgresql-devel sqlite3-devel libqt4-devel libmysqlclient-devel libQtWebKit-devel \ + gcc gcc-c++ make tar gzip patch timezone && \ + zypper clean -a + +RUN mkdir /app +WORKDIR /app +COPY . /app +RUN bundle install + +CMD ["rails", "server", "-b", "0.0.0.0"] From 630e2ca1382fd0ae2617b34379899078b6f1fad2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Imobach=20Gonz=C3=A1lez=20Sosa?= Date: Tue, 22 Oct 2019 09:14:43 +0100 Subject: [PATCH 2/8] Add docker-compose example files --- .gitignore | 1 + docker/database.mysql.yml | 21 +++++++++++++++++ docker/database.postgresql.yml | 34 ++++++++++++++++++++++++++++ docker/database.sqlite.yml | 25 ++++++++++++++++++++ docker/docker-compose.mysql.yml | 22 ++++++++++++++++++ docker/docker-compose.postgresql.yml | 18 +++++++++++++++ docker/docker-compose.sqlite3.yml | 13 +++++++++++ 7 files changed, 134 insertions(+) create mode 100644 docker/database.mysql.yml create mode 100644 docker/database.postgresql.yml create mode 100644 docker/database.sqlite.yml create mode 100644 docker/docker-compose.mysql.yml create mode 100644 docker/docker-compose.postgresql.yml create mode 100644 docker/docker-compose.sqlite3.yml diff --git a/.gitignore b/.gitignore index 1b95341e..e197be3c 100644 --- a/.gitignore +++ b/.gitignore @@ -23,3 +23,4 @@ coverage/* public/upload* upload* .byebug_history +docker-compose.yml \ No newline at end of file diff --git a/docker/database.mysql.yml b/docker/database.mysql.yml new file mode 100644 index 00000000..16ccfbd5 --- /dev/null +++ b/docker/database.mysql.yml @@ -0,0 +1,21 @@ +# SQLite version 3.x +# gem install sqlite3 +# +# Ensure the SQLite 3 gem is defined in your Gemfile +# gem 'sqlite3' +development: + adapter: mysql2 + database: tsp_development + host: db + username: root + password: + +# Warning: The database defined as "test" will be erased and +# re-generated from your development database when you run "rake". +# Do not set this db to the same as development or production. +test: + adapter: mysql2 + database: tsp_test + host: db + username: root + password: diff --git a/docker/database.postgresql.yml b/docker/database.postgresql.yml new file mode 100644 index 00000000..73c165bc --- /dev/null +++ b/docker/database.postgresql.yml @@ -0,0 +1,34 @@ +# SQLite version 3.x +# gem install sqlite3 +# +# Ensure the SQLite 3 gem is defined in your Gemfile +# gem 'sqlite3' +development: + adapter: postgresql + encoding: unicode + database: tsp_development + pool: 5 + host: db + username: postgres + password: + +# Warning: The database defined as "test" will be erased and +# re-generated from your development database when you run "rake". +# Do not set this db to the same as development or production. +test: + adapter: postgresql + encoding: unicode + database: tsp_test + pool: 5 + host: db + username: postgres + password: + +production: + adapter: postgresql + encoding: unicode + database: tsp_production + pool: 5 + host: db + username: rails + password: diff --git a/docker/database.sqlite.yml b/docker/database.sqlite.yml new file mode 100644 index 00000000..51a4dd45 --- /dev/null +++ b/docker/database.sqlite.yml @@ -0,0 +1,25 @@ +# SQLite version 3.x +# gem install sqlite3 +# +# Ensure the SQLite 3 gem is defined in your Gemfile +# gem 'sqlite3' +development: + adapter: sqlite3 + database: db/development.sqlite3 + pool: 5 + timeout: 5000 + +# Warning: The database defined as "test" will be erased and +# re-generated from your development database when you run "rake". +# Do not set this db to the same as development or production. +test: + adapter: sqlite3 + database: db/test.sqlite3 + pool: 5 + timeout: 5000 + +production: + adapter: sqlite3 + database: db/production.sqlite3 + pool: 5 + timeout: 5000 diff --git a/docker/docker-compose.mysql.yml b/docker/docker-compose.mysql.yml new file mode 100644 index 00000000..6cd8e194 --- /dev/null +++ b/docker/docker-compose.mysql.yml @@ -0,0 +1,22 @@ +version: '3' +services: + web: + image: tsp:latest + build: . + volumes: + - .:/app + - /tmp/.X11-unix:/tmp/.X11-unix + - ~/.Xauthority:/root/.Xauthority + ports: + - "3000:3000" + depends_on: + - db + environment: + DISPLAY: "${DISPLAY}" + db: + image: mysql:5.6 + restart: always + environment: + MYSQL_ALLOW_EMPTY_PASSWORD: "yes" + # MYSQL_ROOT_PASSWORD: "tsp:secret" + diff --git a/docker/docker-compose.postgresql.yml b/docker/docker-compose.postgresql.yml new file mode 100644 index 00000000..a7eeaab7 --- /dev/null +++ b/docker/docker-compose.postgresql.yml @@ -0,0 +1,18 @@ +version: '3' +services: + web: + image: tsp:latest + build: . + volumes: + - .:/app + - /tmp/.X11-unix:/tmp/.X11-unix + - ~/.Xauthority:/root/.Xauthority + ports: + - "3000:3000" + depends_on: + - db + environment: + DISPLAY: "${DISPLAY}" + db: + image: postgres:9.6 + restart: always diff --git a/docker/docker-compose.sqlite3.yml b/docker/docker-compose.sqlite3.yml new file mode 100644 index 00000000..fc39e143 --- /dev/null +++ b/docker/docker-compose.sqlite3.yml @@ -0,0 +1,13 @@ +version: '3' +services: + web: + image: tsp:latest + build: . + volumes: + - .:/app + - /tmp/.X11-unix:/tmp/.X11-unix + - ~/.Xauthority:/root/.Xauthority + ports: + - "3000:3000" + environment: + DISPLAY: "${DISPLAY}" From ab61728139344f2367f5fcb46b76b9a50731d1dd Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Imobach=20Gonz=C3=A1lez=20Sosa?= Date: Tue, 22 Oct 2019 11:19:21 +0100 Subject: [PATCH 3/8] Docker usage documentation draft --- doc/DOCKER.md | 37 +++++++++++++++++++++++++++++++++++++ 1 file changed, 37 insertions(+) create mode 100644 doc/DOCKER.md diff --git a/doc/DOCKER.md b/doc/DOCKER.md new file mode 100644 index 00000000..b9db4acf --- /dev/null +++ b/doc/DOCKER.md @@ -0,0 +1,37 @@ +# Using Docker to Develop TSP + +This repository includes a `Dockerfile` and a set of `docker-compose` configuration examples in +order to simplify the process of setting up a development environment. + +Given that you have `docker` and `docker-compose` installed, the process should be pretty +straighforward. + +1. Select a `docker-compose` configuration file from the `docker/` directory and copy it as + `docker-compose.yml`. For instance, to run the application using a PostgreSQL database: + + cp docker/docker-compose.postgresql docker-compose.yml + +2. Uncomment the gem for your favorite database driver from the `Gemfile`. +3. Copy the database configuration from `docker/` for your database. For instance, + to use PostgreSQL: + + cp docker/database.postgresql.yml config/database.yml + +3. Build the image: + + docker-compose build + +4. Now you should be able to set up the database: + + docker-compose run --rm web rake db:setup + +5. (Optional) Run the testsuite to find out whether the application works. + + docker-compose run --rm web rake spec + +6. And, now, you can start the application: + + docker-compose up + +For now on, you will need to rebuild the image whenever you change the `Gemfile` or `Gemfile.lock` +files. From 2c27ad14c8f64df4376da6b2613f42faa3608069 Mon Sep 17 00:00:00 2001 From: Ancor Gonzalez Sosa Date: Tue, 29 Oct 2019 17:55:20 +0100 Subject: [PATCH 4/8] Use openSUSE Leap 15.1 in the development Dockerfile --- Dockerfile | 10 ++++++---- Gemfile | 2 +- doc/DOCKER.md | 2 +- docker/docker-compose.mysql.yml | 6 +----- docker/docker-compose.postgresql.yml | 4 ---- docker/docker-compose.sqlite3.yml | 4 ---- 6 files changed, 9 insertions(+), 19 deletions(-) diff --git a/Dockerfile b/Dockerfile index 5f721248..926c2fb2 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,14 +1,16 @@ -FROM opensuse/leap:42.3 +FROM opensuse/leap:15.1 RUN zypper --gpg-auto-import-keys --non-interactive in --no-recommends \ - ruby ruby-devel ruby2.1-rubygem-bundler libxml2-devel libxslt-devel \ - postgresql-devel sqlite3-devel libqt4-devel libmysqlclient-devel libQtWebKit-devel \ - gcc gcc-c++ make tar gzip patch timezone && \ + ruby ruby-devel ruby2.5-rubygem-bundler libxml2-devel libxslt-devel \ + postgresql-devel sqlite3-devel libmariadb-devel \ + libQt5WebKit5 libQt5WebKit5-devel libQt5WebKitWidgets5 libQt5WebKitWidgets-devel \ + xvfb-run which liberation-fonts gcc gcc-c++ make tar gzip patch timezone && \ zypper clean -a RUN mkdir /app WORKDIR /app COPY . /app +ENV QMAKE=/usr/bin/qmake-qt5 RUN bundle install CMD ["rails", "server", "-b", "0.0.0.0"] diff --git a/Gemfile b/Gemfile index 7f1d2bb9..14b5c468 100644 --- a/Gemfile +++ b/Gemfile @@ -6,7 +6,7 @@ gem 'responders', '~> 2.0' # Choose your weapon gem 'sqlite3', '~> 1.3.13' # gem 'pg', '~> 0.21' -# gem 'mysql2', '~> 0.3.13' +# gem 'mysql2', '~> 0.4.10' # Use SCSS for stylesheets gem 'sass-rails', '~> 4.0.0' diff --git a/doc/DOCKER.md b/doc/DOCKER.md index b9db4acf..10454a81 100644 --- a/doc/DOCKER.md +++ b/doc/DOCKER.md @@ -27,7 +27,7 @@ straighforward. 5. (Optional) Run the testsuite to find out whether the application works. - docker-compose run --rm web rake spec + docker-compose run --rm web xvfb-run -a rake spec 6. And, now, you can start the application: diff --git a/docker/docker-compose.mysql.yml b/docker/docker-compose.mysql.yml index 6cd8e194..c671df11 100644 --- a/docker/docker-compose.mysql.yml +++ b/docker/docker-compose.mysql.yml @@ -5,16 +5,12 @@ services: build: . volumes: - .:/app - - /tmp/.X11-unix:/tmp/.X11-unix - - ~/.Xauthority:/root/.Xauthority ports: - "3000:3000" depends_on: - db - environment: - DISPLAY: "${DISPLAY}" db: - image: mysql:5.6 + image: mariadb:10.2 restart: always environment: MYSQL_ALLOW_EMPTY_PASSWORD: "yes" diff --git a/docker/docker-compose.postgresql.yml b/docker/docker-compose.postgresql.yml index a7eeaab7..0d43b858 100644 --- a/docker/docker-compose.postgresql.yml +++ b/docker/docker-compose.postgresql.yml @@ -5,14 +5,10 @@ services: build: . volumes: - .:/app - - /tmp/.X11-unix:/tmp/.X11-unix - - ~/.Xauthority:/root/.Xauthority ports: - "3000:3000" depends_on: - db - environment: - DISPLAY: "${DISPLAY}" db: image: postgres:9.6 restart: always diff --git a/docker/docker-compose.sqlite3.yml b/docker/docker-compose.sqlite3.yml index fc39e143..a0cd8572 100644 --- a/docker/docker-compose.sqlite3.yml +++ b/docker/docker-compose.sqlite3.yml @@ -5,9 +5,5 @@ services: build: . volumes: - .:/app - - /tmp/.X11-unix:/tmp/.X11-unix - - ~/.Xauthority:/root/.Xauthority ports: - "3000:3000" - environment: - DISPLAY: "${DISPLAY}" From 77854540b53f112def03c55f596508a33695990e Mon Sep 17 00:00:00 2001 From: Ancor Gonzalez Sosa Date: Wed, 30 Oct 2019 11:26:12 +0100 Subject: [PATCH 5/8] Update comments in database docker files --- docker/database.mysql.yml | 14 +++++++++----- docker/database.postgresql.yml | 23 +++++++++-------------- docker/database.sqlite.yml | 6 ------ 3 files changed, 18 insertions(+), 25 deletions(-) diff --git a/docker/database.mysql.yml b/docker/database.mysql.yml index 16ccfbd5..b79177ad 100644 --- a/docker/database.mysql.yml +++ b/docker/database.mysql.yml @@ -1,8 +1,12 @@ -# SQLite version 3.x -# gem install sqlite3 -# -# Ensure the SQLite 3 gem is defined in your Gemfile -# gem 'sqlite3' +# Ensure the MySQL connector gem is defined in your Gemfile +# gem 'mysql2' + +# Warning: this proposes the usage of the root user with no password. +# That's done for simplicity because this docker manifest is only meant for +# development purposes and, for that, a user with privileges to create and +# destroy databases is very convenient. +# NEVER use such setup in a production system. + development: adapter: mysql2 database: tsp_development diff --git a/docker/database.postgresql.yml b/docker/database.postgresql.yml index 73c165bc..f7261198 100644 --- a/docker/database.postgresql.yml +++ b/docker/database.postgresql.yml @@ -1,8 +1,12 @@ -# SQLite version 3.x -# gem install sqlite3 -# -# Ensure the SQLite 3 gem is defined in your Gemfile -# gem 'sqlite3' +# Ensure the PostgreSQL connector gem is defined in your Gemfile +# gem 'pg' + +# Warning: this proposes the usage of the postgres superuser with no password. +# That's done for simplicity because this docker manifest is only meant for +# development purposes and, for that, a user with privileges to create and +# destroy databases is very convenient. +# NEVER use such setup in a production system. + development: adapter: postgresql encoding: unicode @@ -23,12 +27,3 @@ test: host: db username: postgres password: - -production: - adapter: postgresql - encoding: unicode - database: tsp_production - pool: 5 - host: db - username: rails - password: diff --git a/docker/database.sqlite.yml b/docker/database.sqlite.yml index 51a4dd45..1902f924 100644 --- a/docker/database.sqlite.yml +++ b/docker/database.sqlite.yml @@ -17,9 +17,3 @@ test: database: db/test.sqlite3 pool: 5 timeout: 5000 - -production: - adapter: sqlite3 - database: db/production.sqlite3 - pool: 5 - timeout: 5000 From ff2dab340dea6f93af4ee537d0f6f9ae2cde99d7 Mon Sep 17 00:00:00 2001 From: Ancor Gonzalez Sosa Date: Wed, 30 Oct 2019 11:33:20 +0100 Subject: [PATCH 6/8] More explicit docker-compose files --- Dockerfile | 3 +++ doc/DOCKER.md | 2 +- ...-compose.mysql.yml => docker-compose.development.mysql.yml} | 0 ...ostgresql.yml => docker-compose.development.postgresql.yml} | 0 ...pose.sqlite3.yml => docker-compose.development.sqlite3.yml} | 0 5 files changed, 4 insertions(+), 1 deletion(-) rename docker/{docker-compose.mysql.yml => docker-compose.development.mysql.yml} (100%) rename docker/{docker-compose.postgresql.yml => docker-compose.development.postgresql.yml} (100%) rename docker/{docker-compose.sqlite3.yml => docker-compose.development.sqlite3.yml} (100%) diff --git a/Dockerfile b/Dockerfile index 926c2fb2..9193595c 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,5 +1,8 @@ FROM opensuse/leap:15.1 +# This includes several packages (like WebKit, xvfb or liberation-fonts) +# That are only needed to run the automated tests and wouldn't be relevant +# in a production environment. RUN zypper --gpg-auto-import-keys --non-interactive in --no-recommends \ ruby ruby-devel ruby2.5-rubygem-bundler libxml2-devel libxslt-devel \ postgresql-devel sqlite3-devel libmariadb-devel \ diff --git a/doc/DOCKER.md b/doc/DOCKER.md index 10454a81..3b8a5f33 100644 --- a/doc/DOCKER.md +++ b/doc/DOCKER.md @@ -9,7 +9,7 @@ straighforward. 1. Select a `docker-compose` configuration file from the `docker/` directory and copy it as `docker-compose.yml`. For instance, to run the application using a PostgreSQL database: - cp docker/docker-compose.postgresql docker-compose.yml + cp docker/docker-compose.development.postgresql docker-compose.yml 2. Uncomment the gem for your favorite database driver from the `Gemfile`. 3. Copy the database configuration from `docker/` for your database. For instance, diff --git a/docker/docker-compose.mysql.yml b/docker/docker-compose.development.mysql.yml similarity index 100% rename from docker/docker-compose.mysql.yml rename to docker/docker-compose.development.mysql.yml diff --git a/docker/docker-compose.postgresql.yml b/docker/docker-compose.development.postgresql.yml similarity index 100% rename from docker/docker-compose.postgresql.yml rename to docker/docker-compose.development.postgresql.yml diff --git a/docker/docker-compose.sqlite3.yml b/docker/docker-compose.development.sqlite3.yml similarity index 100% rename from docker/docker-compose.sqlite3.yml rename to docker/docker-compose.development.sqlite3.yml From 020e2b715e50d8c40ac8e9641cb378915a73d7a2 Mon Sep 17 00:00:00 2001 From: Ancor Gonzalez Sosa Date: Wed, 30 Oct 2019 17:15:52 +0100 Subject: [PATCH 7/8] Improve compatibility with PostgreSQL --- app/controllers/events_controller.rb | 3 ++- app/helpers/events_helper.rb | 2 +- app/models/event_organizer.rb | 2 +- spec/features/event_emails_spec.rb | 8 ++++---- spec/helpers/events_helper_spec.rb | 12 ++++++++---- spec/models/event_organizer_spec.rb | 2 +- 6 files changed, 17 insertions(+), 12 deletions(-) diff --git a/app/controllers/events_controller.rb b/app/controllers/events_controller.rb index 36a07f2a..5ccdd90d 100644 --- a/app/controllers/events_controller.rb +++ b/app/controllers/events_controller.rb @@ -10,7 +10,8 @@ def participants { label: @event.name, url: event_path(@event) }, { label: 'participants' } ] - @requests = @event.travel_sponsorships.includes(:user).group(:user_id).accessible_by(current_ability) + @requests = @event.travel_sponsorships.eager_load(:user).order('lower(users.nickname)').accessible_by(current_ability) + @requests.uniq!(&:user_id) end protected diff --git a/app/helpers/events_helper.rb b/app/helpers/events_helper.rb index fd379392..bcfcaca3 100644 --- a/app/helpers/events_helper.rb +++ b/app/helpers/events_helper.rb @@ -14,7 +14,7 @@ def event_title_line(event) def users_for_event(state) requests = @event.travel_sponsorships.includes(:user).accessible_by(current_ability) requests = requests.where(state: state) if state != 'all' - requests.distinct.pluck('users.email') + requests.distinct.order('users.email').pluck('users.email') end def state_label(state) diff --git a/app/models/event_organizer.rb b/app/models/event_organizer.rb index 59d6cb5f..19a5df06 100644 --- a/app/models/event_organizer.rb +++ b/app/models/event_organizer.rb @@ -9,6 +9,6 @@ class EventOrganizer < ActiveRecord::Base validates :user_id, uniqueness: { scope: :event_id, message: 'Already an event organizer for this event' } def self.autocomplete_users(term) - User.order(:nickname).where('nickname like ? or email like ?', "%#{term}%", "%#{term}%").pluck(:nickname, :email) + User.order('lower(nickname)').where('nickname like ? or email like ?', "%#{term}%", "%#{term}%").pluck(:nickname, :email) end end diff --git a/spec/features/event_emails_spec.rb b/spec/features/event_emails_spec.rb index 1873d955..f112f8ae 100644 --- a/spec/features/event_emails_spec.rb +++ b/spec/features/event_emails_spec.rb @@ -52,12 +52,12 @@ page.check('Submitted') page.check('Incomplete') - page.should have_field('To', with: 'gial.ackbar@rebel-alliance.org,luke.skywalker@rebel-alliance.org,evram.lajaie@rebel-alliance.org,'\ - 'c3po@droids.com,wedge.antilles@rebel-alliance.org') + mails = 'c3po@droids.com,evram.lajaie@rebel-alliance.org,gial.ackbar@rebel-alliance.org,' \ + 'luke.skywalker@rebel-alliance.org,wedge.antilles@rebel-alliance.org' + page.should have_field('To', with: mails) page.check('All') - page.should have_field('To', with: 'gial.ackbar@rebel-alliance.org,luke.skywalker@rebel-alliance.org,evram.lajaie@rebel-alliance.org,'\ - 'c3po@droids.com,wedge.antilles@rebel-alliance.org') + page.should have_field('To', with: mails) fill_in 'Subject', with: "Death Star's destruction celebration" fill_in 'event_email_body', with: "Event Death Star's destruction celebration to be conducted soon. Be ready." diff --git a/spec/helpers/events_helper_spec.rb b/spec/helpers/events_helper_spec.rb index 2d97861f..0f97b62d 100644 --- a/spec/helpers/events_helper_spec.rb +++ b/spec/helpers/events_helper_spec.rb @@ -10,15 +10,19 @@ describe '#users_for_event' do it 'returns email of all the participants of the event' do - expect(users_for_event('all')).to eq(['gial.ackbar@rebel-alliance.org', 'luke.skywalker@rebel-alliance.org', 'wedge.antilles@rebel-alliance.org', - 'evram.lajaie@rebel-alliance.org', 'c3po@droids.com']) + expect(users_for_event('all')).to eq( + ['c3po@droids.com', 'evram.lajaie@rebel-alliance.org', 'gial.ackbar@rebel-alliance.org', + 'luke.skywalker@rebel-alliance.org', 'wedge.antilles@rebel-alliance.org'] + ) end it 'returns emails of participants with their request in submitted state' do expect(users_for_event('submitted')).to eq(['wedge.antilles@rebel-alliance.org']) end it 'returns emails of participants with their request in incomplete state' do - expect(users_for_event('incomplete')).to eq(['gial.ackbar@rebel-alliance.org', 'luke.skywalker@rebel-alliance.org', 'evram.lajaie@rebel-alliance.org', - 'c3po@droids.com']) + expect(users_for_event('incomplete')).to eq( + ['c3po@droids.com', 'evram.lajaie@rebel-alliance.org', + 'gial.ackbar@rebel-alliance.org', 'luke.skywalker@rebel-alliance.org'] + ) end it 'returns emails of participants with their request in canceled state' do expect(users_for_event('canceled')) .to eq([]) diff --git a/spec/models/event_organizer_spec.rb b/spec/models/event_organizer_spec.rb index 3043993a..f301f787 100644 --- a/spec/models/event_organizer_spec.rb +++ b/spec/models/event_organizer_spec.rb @@ -13,6 +13,6 @@ it 'nickname and email of the user' do expect(EventOrganizer.autocomplete_users('john')).to eq [['johnsnow', 'john.skywalker@rebel-alliance.org']] - expect(EventOrganizer.autocomplete_users('co')).to eq [['C3PO', 'c3po@droids.com'], ['DD-19.A1', 'dd-19.a1@droids.com'], ['commanderlajaier', 'evram.lajaie@rebel-alliance.org']] + expect(EventOrganizer.autocomplete_users('co')).to eq [['C3PO', 'c3po@droids.com'], ['commanderlajaier', 'evram.lajaie@rebel-alliance.org'], ['DD-19.A1', 'dd-19.a1@droids.com']] end end From d1e85c639aee9196fb58b654ceff83d0f8a1f916 Mon Sep 17 00:00:00 2001 From: Ancor Gonzalez Sosa Date: Thu, 31 Oct 2019 10:54:28 +0100 Subject: [PATCH 8/8] Update README --- README.md | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index 7e4b01f0..e4ba0c01 100644 --- a/README.md +++ b/README.md @@ -24,12 +24,17 @@ name). ## Requirements -* Ruby >= 1.9 +* Ruby >= 2.4 * Any Rails supported database system: PosgreSQL, SQLite3, MariaDB, MySQL... ## Installation Please refer to [INSTALL](doc/INSTALL.md) documentation file +## Development +To simplify the process of setting up a development environment, this repository +includes some `docker-compose` configuration examples. Check the +[DOCKER](doc/DOCKER.md) documentation file. + ## Contact Ancor González Sosa