Compare commits

..

67 Commits

Author SHA1 Message Date
Brenda Wallace
76db8177d0 Only build the dev and mainline branches 2020-08-17 11:24:57 +12:00
Brenda Wallace
6735fa7535 REduce parallel jobs on travis to 3 2020-08-17 11:23:11 +12:00
Brenda Wallace
e92600a07e Run bin/setup on travis 2020-08-17 10:53:07 +12:00
Brenda Wallace
dba9a7b2b5 Read variables from .env when checking for elastic 2020-08-17 10:45:33 +12:00
Brenda Wallace
8c69652f4e Updating setup to read database.yaml and .env, and check for elastic 2020-08-17 10:44:55 +12:00
Brenda Wallace
70e9c029d7 Set up database config for parallel tests 2020-08-17 10:29:18 +12:00
Brenda Wallace
08c1a4e80d fix travis parallel config 2020-08-16 20:30:49 +12:00
Brenda Wallace
1ed8befb64 Merge branch 'upgrade/rails-6' into feature/parallel-tests 2020-08-16 20:29:37 +12:00
Brenda Wallace
0ba32ab15e Configure contributor check for github actions 2020-08-16 20:27:55 +12:00
Brenda Wallace
42ce0d2b9b Configure contributor check for github actions 2020-08-16 20:27:17 +12:00
Brenda Wallace
8eb101138d Setting user name and email in github actions 2020-08-16 16:41:16 +12:00
Brenda
d2aa8d2e9b gem updates 2020-08-16 16:36:33 +12:00
Brenda Wallace
7450dc43e2 Install bundler depencdencies 2020-08-16 16:33:00 +12:00
Brenda Wallace
0ec892171c Merge branch 'upgrade/rails-6' into feature/parallel-tests 2020-08-16 16:32:21 +12:00
Brenda Wallace
74c7b79eaa check out repo 2020-08-16 16:32:03 +12:00
Brenda Wallace
a8daccc621 Run tests in parallell 2020-08-16 15:52:27 +12:00
Brenda Wallace
9490960063 removing last mention of cloudmade
this company used to produce the leaflet widget, but that staff member moved elsewhere in like 2012 and took the code with them and made it open source. the credit is no longer needed
2020-08-16 15:40:01 +12:00
Brenda Wallace
e7980631d6 Help view spec find the correct template 2020-08-16 15:33:53 +12:00
Brenda Wallace
9d78dd603c only run static checks on github 2020-08-15 15:06:33 +12:00
Brenda Wallace
224e17352f Adding ru files to codeclimate 2020-08-15 15:05:02 +12:00
Brenda Wallace
9f1671cbc5 Explaning why brakeman is off 2020-08-15 15:04:41 +12:00
Brenda Wallace
503b54da1f Removing dependabot config 2020-08-15 15:03:31 +12:00
Brenda Wallace
8aa7fdda2d Renaming notifier to new rails 6 style 2020-08-15 15:02:23 +12:00
Brenda Wallace
ba86a480bb Removed cloudmade test 2020-08-15 15:00:04 +12:00
Brenda Wallace
45780ac3f0 Comment out a migration that needs an old gem to work 2020-08-15 13:32:11 +12:00
Brenda Wallace
e4942a6646 Upgrade to activemedian 0.2.0 2020-08-15 13:26:49 +12:00
Brenda Wallace
f77ab839ff Run github actions on push, pull request 2020-08-15 10:52:59 +12:00
Brenda Wallace
b63c9ca7eb Removed extra steps on travis 2020-08-15 10:51:45 +12:00
Brenda Wallace
d68acafd41 seperate steps on travis 2020-08-15 10:49:35 +12:00
Brenda Wallace
80e2487b1b Remove extra env variable 2020-08-15 10:43:33 +12:00
Brenda Wallace
26a3d6968c Update name from Notifier to NotifierMailer 2020-08-15 10:17:31 +12:00
Brenda Wallace
84717a7937 Prepare database in travis run 2020-08-15 10:15:47 +12:00
Brenda Wallace
3c4ecef985 Removed contributor check from travis 2020-08-15 10:14:41 +12:00
Brenda Wallace
a59db8c090 Adding contributor check to github actions 2020-08-15 09:48:42 +12:00
Brenda Wallace
757394ddd9 Updating content type in tests to include charset 2020-08-15 09:32:35 +12:00
Brenda Wallace
037dd8c548 Ensuring the postgresql media functions exist 2020-08-15 09:29:45 +12:00
Brenda Wallace
30fff768f2 Merge remote-tracking branch 'upstream/dev' into upgrade/rails-6 2020-08-15 09:27:48 +12:00
Brenda Wallace
a23b8f34f8 Adding github actions 2020-08-04 16:19:03 +12:00
Brenda Wallace
e6a01473fd ensure the activemedian methods are in the test db 2020-08-03 14:24:06 +12:00
Brenda Wallace
7b42d86921 Merge branch 'upgrade/rails-6' of github.com:Br3nda/growstuff into upgrade/rails-6 2020-08-02 14:46:00 +12:00
Brenda Wallace
a66187fe41 fixed ambiguous negative 2020-08-02 14:45:55 +12:00
Brenda Wallace
1e897ac671 Use member.kpt in auth 2020-08-02 14:45:45 +12:00
Brenda Wallace
989750ac47 Merge branch 'dev' into upgrade/rails-6 2020-08-02 14:24:13 +12:00
Brenda Wallace
61363305b5 Prefer ary[n..] over ary[n..-1]. 2020-08-02 13:57:20 +12:00
Brenda Wallace
4a8f76e21a removed redundant escaping 2020-08-02 13:56:16 +12:00
Brenda Wallace
2bddc15cb0 run travis-ci as test 2020-08-02 13:54:01 +12:00
Brenda Wallace
2cf449800c Add active median in test runner on travis-ci 2020-08-02 13:53:22 +12:00
Brenda Wallace
30d1fd67ab Rename Notifer to NotifierMailer 2020-08-02 13:46:01 +12:00
Brenda Wallace
aa2648784f Rubocop indentation fixes 2020-08-02 09:24:54 +12:00
Brenda Wallace
282e76b599 Apply suggestions from code review 2020-08-02 09:22:13 +12:00
Brenda Wallace
31dc367298 Disabling brakeman on codeclimate because it doesn't understand rails 6 2020-08-02 09:18:28 +12:00
Brenda Wallace
ca3265841c Apply suggestions from code review 2020-08-02 09:16:46 +12:00
Brenda
99ae2da126 Splitting up complex method in photos controller 2020-08-02 09:12:33 +12:00
Brenda
df2aacd7ff Added missing unique constraint to garden_types 2020-08-02 09:03:47 +12:00
Brenda Wallace
d629e0d976 Rubocop target is rails 6.0 2020-08-02 08:56:13 +12:00
Brenda Wallace
bf9e3328eb Removing link to cloudmade
because they no longer exist and the domain is used by something else now
2020-08-02 08:50:39 +12:00
Brenda Wallace
40989aeefe Removing deprecated commented out parts of application.rb 2020-08-02 08:50:20 +12:00
Brenda
a11db6767b rewrote order by to not be raw sql 2020-08-02 08:43:17 +12:00
Brenda
fc72f0072c removed redundant assignment 2020-08-02 08:34:02 +12:00
Brenda Wallace
0e02ee749f Align end 2020-08-02 08:32:57 +12:00
Brenda
94e6576b36 foreign key declarations not needed anymore 2020-08-02 08:30:24 +12:00
Brenda Wallace
1bfd3851e8 Enable the new rubocop cops 2020-08-02 08:23:52 +12:00
Brenda Wallace
d590a4337d Merge branch 'feature/dotenv' into upgrade/rails-6 2020-08-02 08:21:11 +12:00
Brenda
d0455c25ab Rubocop fixes after rails 6 upgrades 2020-08-02 08:19:29 +12:00
Brenda Wallace
7c55ce628a New robocops 2020-08-02 08:18:44 +12:00
Brenda Wallace
95bc0a927c Upgrade to rails 6 2020-08-02 08:12:38 +12:00
Brenda Wallace
8eb8275493 Upgrade rails gem to 6 2020-08-01 20:33:51 +12:00
40 changed files with 430 additions and 650 deletions

View File

@@ -1,33 +1,25 @@
plugins:
engines:
rubocop:
enabled: true
channel: "rubocop-0-88"
scss-lint:
enabled: true
shellcheck:
enabled: true
eslint:
enabled: true
coffeelint:
enabled: true
brakeman:
enabled: false # codeclimate's brakeman is stuck in rails 5 rules
bundler-audit:
enabled: true
coffeelint:
enabled: true
duplication:
enabled: true
config:
languages:
- ruby
- javascript
editorconfig:
enabled: true
eslint:
enabled: true
fixme:
enabled: true
haml-lint:
enabled: true
nodesecurity:
enabled: true
rubocop:
enabled: true
channel: "rubocop-1-11"
scss-lint:
enabled: true
shellcheck:
enabled: true
ratings:
paths:
- "**.rb"

View File

@@ -1,59 +0,0 @@
version: 2
updates:
- package-ecosystem: bundler
directory: "/"
schedule:
interval: daily
time: "07:00"
open-pull-requests-limit: 10
versioning-strategy: lockfile-only
ignore:
- dependency-name: active_median
versions:
- "< 0.2.2, >= 0.2.1.a"
- dependency-name: rubocop
versions:
- "< 0.63, >= 0.62.a"
- dependency-name: rubocop
versions:
- "< 0.64, >= 0.63.a"
- dependency-name: sidekiq
versions:
- 5.2.4
- dependency-name: oj
versions:
- 3.11.4
- dependency-name: listen
versions:
- 3.5.0
- dependency-name: rspec-rails
versions:
- 4.1.0
- 5.0.0
- dependency-name: searchkick
versions:
- 4.4.3
- dependency-name: rswag-api
versions:
- 2.3.3
- dependency-name: rswag-specs
versions:
- 2.3.3
- dependency-name: rswag-ui
versions:
- 2.3.3
- dependency-name: timecop
versions:
- 0.9.3
- dependency-name: puma
versions:
- 5.2.0
- dependency-name: capybara
versions:
- 3.35.1
- package-ecosystem: github-actions
directory: "/"
schedule:
interval: daily
time: "07:00"
open-pull-requests-limit: 10

View File

@@ -1,44 +0,0 @@
# This workflow integrates Brakeman with GitHub's Code Scanning feature
# Brakeman is a static analysis security vulnerability scanner for Ruby on Rails applications
name: Brakeman Scan
# This section configures the trigger for the workflow. Feel free to customize depending on your convention
on:
push:
branches: [ dev ]
pull_request:
branches: [ dev ]
jobs:
brakeman-scan:
name: Brakeman Scan
runs-on: ubuntu-latest
steps:
# Checkout the repository to the GitHub Actions runner
- name: Checkout
uses: actions/checkout@v2.3.4
# Customize the ruby version depending on your needs
- name: Setup Ruby
uses: actions/setup-ruby@v1.1.3
with:
ruby-version: '2.7'
- name: Setup Brakeman
env:
BRAKEMAN_VERSION: '4.10' # SARIF support is provided in Brakeman version 4.10+
run: |
gem install brakeman --version $BRAKEMAN_VERSION
# Execute Brakeman CLI and generate a SARIF output with the security issues identified during the analysis
- name: Scan
continue-on-error: true
run: |
brakeman -f sarif -o output.sarif.json .
# Upload the SARIF file generated in the previous step
- name: Upload SARIF
uses: github/codeql-action/upload-sarif@v1
with:
sarif_file: output.sarif.json

View File

@@ -6,117 +6,10 @@ jobs:
contributors:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2.3.4
- uses: actions/checkout@v1
- name: Install ruby version specified in .ruby-version
uses: ruby/setup-ruby@v1
with:
bundler-cache: true
- name: Install gem bundle
run: |
gem install bundler
bundle install
- name: Check contributors
run: |
bundle exec script/check_contributors_md.rb
rspec:
runs-on: ubuntu-latest
services:
db:
image: postgres
env:
##
# The Postgres service fails its docker health check unless you
# specify these environment variables
#
POSTGRES_USER: postgres
POSTGRES_PASSWORD: postgres
POSTGRES_DB: growstuff_test
ports: ['5432:5432']
options: >-
--health-cmd pg_isready
--health-interval 10s
--health-timeout 5s
--health-retries 5
env:
APP_DOMAIN_NAME: localhost:3000
APP_PROTOCOL: http
CC_TEST_REPORTER_ID: ${{ secrets.CC_TEST_REPORTER_ID }}
DATABASE_URL: postgres://postgres:postgres@localhost:5432/growstuff_test
DEVISE_SECRET_KEY: secret
ELASTIC_SEARCH_VERSION: "7.5.1-amd64"
GROWSTUFF_EMAIL: "noreply@test.growstuff.org"
GROWSTUFF_FLICKR_KEY: secretkey"
GROWSTUFF_FLICKR_SECRET: secretsecret
GROWSTUFF_SITE_NAME: "Growstuff (travis)"
RAILS_ENV: test
RAILS_SECRET_TOKEN: supersecret
steps:
- name: Checkout this repo
uses: actions/checkout@v2.3.4
- name: Configure sysctl limits
run: |
sudo swapoff -a
sudo sysctl -w vm.swappiness=1
sudo sysctl -w fs.file-max=262144
sudo sysctl -w vm.max_map_count=262144
- name: Start Elasticsearch
uses: elastic/elastic-github-actions/elasticsearch@master
with:
stack-version: 7.5.1
##
# Cache Yarn modules
#
# See https://github.com/actions/cache/blob/master/examples.md#node---yarn for details
#
- name: Get yarn cache directory path
id: yarn-cache-dir-path
run: echo "::set-output name=dir::$(yarn cache dir)"
- name: Setup yarn cache
uses: actions/cache@v2.1.5
id: yarn-cache # use this to check for `cache-hit` (`steps.yarn-cache.outputs.cache-hit != 'true'`)
with:
path: ${{ steps.yarn-cache-dir-path.outputs.dir }}
key: ${{ runner.os }}-yarn-${{ hashFiles('**/yarn.lock') }}
restore-keys: |
${{ runner.os }}-yarn-
- name: Install required OS packages
run: |
sudo apt-get -y install libpq-dev google-chrome-stable
- name: Install NodeJS
uses: actions/setup-node@v2.4.0
with:
node-version: '12'
- name: Install Ruby (version given by .ruby-version) and Bundler
uses: ruby/setup-ruby@v1
with:
bundler-cache: true
- name: Install required JS packages
run: yarn install
- name: install chrome
run: sudo apt-get install google-chrome-stable
- name: Prepare database for testing
run: bundle exec rails db:prepare
- name: precompile assets
run: bundle exec rails assets:precompile
- name: index into elastic search
run: bundle exec rails search:reindex
- name: Run rspec (report results to Percy.io and CodeClimate)
run: bundle exec rspec spec -fd
- name: Report to code climate
run: |
gem install codeclimate-test-reporter
codeclimate-test-reporter
./script/check_contributors_md.rb

View File

@@ -1,7 +1,6 @@
inherit_from: .rubocop_todo.yml
require: rubocop-rails
AllCops:
NewCops: enable
Exclude:
- 'db/schema.rb'
- 'vendor/**/*'
@@ -61,3 +60,75 @@ Rails/SkipsModelValidations:
Exclude:
- 'db/migrate/20190317023129_finished_boolean.rb'
- 'db/seeds.rb'
Layout/EmptyLinesAroundAttributeAccessor:
Enabled: true
Layout/SpaceAroundMethodCallOperator:
Enabled: true
Lint/DeprecatedOpenSSLConstant:
Enabled: true
Lint/DuplicateElsifCondition:
Enabled: true
Lint/MixedRegexpCaptureTypes:
Enabled: true
Lint/RaiseException:
Enabled: true
Lint/StructNewOverride:
Enabled: true
Style/AccessorGrouping:
Enabled: true
Style/ArrayCoercion:
Enabled: true
Style/BisectedAttrAccessor:
Enabled: false
Style/CaseLikeIf:
Enabled: true
Style/ExponentialNotation:
Enabled: true
Style/HashAsLastArrayItem:
Enabled: true
Style/HashEachMethods:
Enabled: true
Style/HashLikeCase:
Enabled: true
Style/HashTransformKeys:
Enabled: true
Style/HashTransformValues:
Enabled: true
Style/RedundantAssignment:
Enabled: true
Style/RedundantFetchBlock:
Enabled: true
Style/RedundantFileExtensionInRequire:
Enabled: true
Style/RedundantRegexpCharacterClass:
Enabled: true
Style/RedundantRegexpEscape:
Enabled: true
Style/SlicingWithRange:
Enabled: true
Rails/ActiveRecordCallbacksOrder:
Enabled: true
Rails/FindById:
Enabled: true
Rails/Inquiry:
Enabled: true
Rails/MailerName:
Enabled: true
Rails/MatchRoute:
Enabled: true
Rails/NegateInclude:
Enabled: true
Rails/Pluck:
Enabled: true
Rails/PluckInWhere:
Enabled: true
Rails/RenderInline:
Enabled: true
Rails/RenderPlainText:
Enabled: true
Rails/ShortI18n:
Enabled: true
Rails/WhereExists:
Enabled: true

View File

@@ -1 +1 @@
2.7.2
2.6.5

View File

@@ -1,18 +1,52 @@
sudo: required
language: ruby
dist: bionic
services:
- postgresql
- xvfb
branches:
only:
- mainline
- dev
- mainline
- dev
cache:
bundler: true
yarn: true
directories:
- tmp/cache/assets/test/sprockets
addons:
postgresql: "9.4" # Matches production
code_climate:
repo_token:
secure: "PfhLGBKRgNqhKuYCJsK+VPhdAzcgWFGeeOyxC/eS8gtlvIISVdgyZE+r30uIei0DFI6zEiN62eW4d+xtT4j7/e2ZcAcx7U52mza/SnQNuu3nCGQDJB8VOvV5NbnwXfi8vfr4e889Mt7k3ocd2c4gqB4UtRqrzhygj7HN+B/GfEk="
env:
matrix:
- "TEST_GROUP=1"
- "TEST_GROUP=2"
- "TEST_GROUP=3"
global:
- secure: "Z5TpM2jEX4UCvNePnk/LwltQX48U2u9BRc+Iypr1x9QW2o228QJhPIOH39a8RMUrepGnkQIq9q3ZRUn98RfrJz1yThtlNFL3NmzdQ57gKgjGwfpa0e4Dwj/ZJqV2D84tDGjvdVYLP7zzaYZxQcwk/cgNpzKf/jq97HLNP7CYuf4="
- ELASTIC_SEARCH_VERSION="7.5.1-amd64"
- COVERAGE=true
- GROWSTUFF_EMAIL="noreply@test.growstuff.org"g
- GROWSTUFF_SITE_NAME="Growstuff (travis)"
- RAILS_SECRET_TOKEN='xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx']
- RAILS_ENV=test
before_install:
- sudo apt clean
- sudo apt update
- sudo apt install dpkg
- ./script/install_elasticsearch.sh
- sudo apt install google-chrome-stable
- ./bin/setup
script:
# - bundle exec rails db:create db:migrate
# - bundle exec rails assets:precompile
# - bundle exec rails search:reindex
# - bundle exec rspec spec -fd
- bundle exec parallel_test spec/ -n 3 --only-group $TEST_GROUP --group-by filesize --type rspec
after_script:
- >
gem install codeclimate-test-reporter
codeclimate-test-reporter
before_deploy:
- bundle exec script/heroku_maintenance.rb on
deploy:
@@ -25,6 +59,7 @@ deploy:
dev: growstuff-staging
mainline: growstuff-prod
run:
- "rake db:migrate"
- "script/deploy-tasks.sh"
- restart
after_deploy:

View File

@@ -91,11 +91,9 @@ submit the change with your pull request.
- Taylor William / [bestest-mensch](https://github.com/bestest-mensch)
- André Aubin / [lambda2](https://github.com/lambda2)
- Martina Simicic / [simicic](https://github.com/simicic)
- Rowan Crawford / [wombleton](https://github.com/wombleton)
- Le-jun - [lejun](https://github.com/le-jun)
## Bots
### Security and Dependency Updates
- DeppBot / [deppbot](https://github.com/deppbot)
- `dependabot[bot]` [dependabot](https://github.com/dependabot-bot) / [dependabot-preview](https://github.com/apps/dependabot-preview)
- dependabot-preview[bot] [dependabot](https://github.com/dependabot-bot) / [dependabot-preview](https://github.com/apps/dependabot-preview)

View File

@@ -2,8 +2,7 @@
source 'https://rubygems.org'
# Match ruby version in .ruby-version
ruby File.read('.ruby-version')
ruby '2.6.5'
gem 'rails', '6.0.3.2'
@@ -113,7 +112,7 @@ gem 'rake', '>= 10.0.0'
gem "responders"
# allows soft delete. Used for members.
gem 'discard', '>= 1.2'
gem 'discard', '~> 1.2'
gem 'xmlrpc' # fixes rake error - can be removed if not needed later
@@ -156,6 +155,7 @@ group :development, :test do
gem 'faker'
gem 'haml-rails' # HTML templating language
gem 'query_diet'
gem 'parallel_tests'
gem 'rspec-activemodel-mocks'
gem 'rspec-rails' # unit testing framework
gem 'rswag-specs'
@@ -166,6 +166,7 @@ group :development, :test do
gem 'dotenv-rails'
# cli utils
gem 'coveralls', require: false # coverage analysis
gem 'haml-i18n-extractor', require: false
gem 'haml_lint', '>= 0.25.1', require: false # Checks haml files for goodness
gem 'i18n-tasks', require: false # adds tests for finding missing and unused translations
@@ -175,7 +176,7 @@ end
group :test do
gem 'codeclimate-test-reporter', require: false
gem 'percy-capybara'
gem 'percy-capybara', '~> 4.0.0'
gem 'rails-controller-testing'
gem 'selenium-webdriver'
gem 'timecop'

View File

@@ -71,17 +71,17 @@ GEM
adamantium (0.2.0)
ice_nine (~> 0.11.0)
memoizable (~> 0.4.0)
addressable (2.8.0)
addressable (2.7.0)
public_suffix (>= 2.0.2, < 5.0)
anima (0.3.1)
abstract_type (~> 0.0.7)
adamantium (~> 0.2)
equalizer (~> 0.0.11)
ast (2.4.2)
autoprefixer-rails (10.2.4.0)
ast (2.4.1)
autoprefixer-rails (9.8.6.1)
execjs
bcrypt (3.1.16)
better_errors (2.9.1)
bcrypt (3.1.15)
better_errors (2.7.1)
coderay (>= 1.0.0)
erubi (>= 1.0.0)
rack (>= 0.9.0)
@@ -89,7 +89,7 @@ GEM
bonsai-elasticsearch-rails (7.0.1)
elasticsearch-model (< 8)
elasticsearch-rails (< 8)
bootstrap (4.6.0)
bootstrap (4.5.2)
autoprefixer-rails (>= 9.1.0)
popper_js (>= 1.14.3, < 2)
sassc-rails (>= 2.0.0)
@@ -99,34 +99,33 @@ GEM
actionpack (>= 5.2)
activemodel (>= 5.2)
builder (3.2.4)
bullet (6.1.4)
bullet (6.1.0)
activesupport (>= 3.0.0)
uniform_notifier (~> 1.11)
byebug (11.1.3)
cancancan (3.2.1)
capybara (3.35.3)
cancancan (3.1.0)
capybara (3.33.0)
addressable
mini_mime (>= 0.1.3)
nokogiri (~> 1.8)
rack (>= 1.6.0)
rack-test (>= 0.6.3)
regexp_parser (>= 1.5, < 3.0)
regexp_parser (~> 1.5)
xpath (~> 3.2)
capybara-email (3.0.2)
capybara (>= 2.4, < 4.0)
mail
capybara-screenshot (1.0.25)
capybara-screenshot (1.0.24)
capybara (>= 1.0, < 4)
launchy
carrierwave (2.1.1)
carrierwave (2.1.0)
activemodel (>= 5.0.0)
activesupport (>= 5.0.0)
addressable (~> 2.6)
image_processing (~> 1.1)
mimemagic (>= 0.3.0)
mini_mime (>= 0.1.3)
ssrf_filter (~> 1.0)
chartkick (4.0.4)
chartkick (3.4.0)
childprocess (3.0.0)
codeclimate-test-reporter (1.0.9)
simplecov (<= 0.13)
@@ -154,19 +153,20 @@ GEM
concord (0.1.5)
adamantium (~> 0.2.0)
equalizer (~> 0.0.9)
concurrent-ruby (1.1.8)
concurrent-ruby (1.1.7)
connection_pool (2.2.3)
coveralls (0.7.1)
multi_json (~> 1.3)
rest-client
simplecov (>= 0.7)
term-ansicolor
thor
crass (1.0.6)
csv_shaper (1.3.2)
activesupport (>= 3.0.0)
dalli (2.7.11)
database_cleaner (2.0.1)
database_cleaner-active_record (~> 2.0.0)
database_cleaner-active_record (2.0.0)
activerecord (>= 5.a)
database_cleaner-core (~> 2.0.0)
database_cleaner-core (2.0.1)
devise (4.8.0)
dalli (2.7.10)
database_cleaner (1.8.5)
devise (4.7.2)
bcrypt (~> 3.0)
orm_adapter (~> 0.1)
railties (>= 4.1.0)
@@ -176,61 +176,48 @@ GEM
discard (1.2.0)
activerecord (>= 4.2, < 7)
docile (1.1.5)
domain_name (0.5.20190701)
unf (>= 0.0.5, < 1.0.0)
dotenv (2.7.6)
dotenv-rails (2.7.6)
dotenv (= 2.7.6)
railties (>= 3.2)
elasticsearch (6.8.3)
elasticsearch-api (= 6.8.3)
elasticsearch-transport (= 6.8.3)
elasticsearch-api (6.8.3)
elasticsearch (6.8.2)
elasticsearch-api (= 6.8.2)
elasticsearch-transport (= 6.8.2)
elasticsearch-api (6.8.2)
multi_json
elasticsearch-model (7.1.1)
elasticsearch-model (7.1.0)
activesupport (> 3)
elasticsearch (> 1)
hashie
elasticsearch-rails (7.1.0)
elasticsearch-transport (6.8.3)
elasticsearch-transport (6.8.2)
faraday (~> 1)
multi_json
equalizer (0.0.11)
erubi (1.10.0)
erubi (1.9.0)
erubis (2.7.0)
excon (0.78.1)
excon (0.76.0)
execjs (2.7.0)
factory_bot (6.2.0)
factory_bot (6.1.0)
activesupport (>= 5.0.0)
factory_bot_rails (6.2.0)
factory_bot (~> 6.2.0)
factory_bot_rails (6.1.0)
factory_bot (~> 6.1.0)
railties (>= 5.0.0)
faker (2.18.0)
faker (2.13.0)
i18n (>= 1.6, < 2)
faraday (1.5.1)
faraday-em_http (~> 1.0)
faraday-em_synchrony (~> 1.0)
faraday-excon (~> 1.1)
faraday-httpclient (~> 1.0.1)
faraday-net_http (~> 1.0)
faraday-net_http_persistent (~> 1.1)
faraday-patron (~> 1.0)
faraday (1.0.1)
multipart-post (>= 1.2, < 3)
ruby2_keywords (>= 0.0.4)
faraday-em_http (1.0.0)
faraday-em_synchrony (1.0.0)
faraday-excon (1.1.0)
faraday-httpclient (1.0.1)
faraday-net_http (1.0.1)
faraday-net_http_persistent (1.1.0)
faraday-patron (1.0.0)
faraday_middleware (1.0.0)
faraday (~> 1.0)
ffi (1.15.0)
ffi (1.13.1)
flickraw (0.9.10)
font-awesome-sass (5.15.1)
font-awesome-sass (5.13.0)
sassc (>= 1.11)
friendly_id (5.4.2)
friendly_id (5.4.0)
activerecord (>= 4.0.0)
geocoder (1.6.7)
geocoder (1.6.3)
gibbon (1.2.1)
httparty
multi_json (>= 1.9.0)
@@ -239,7 +226,7 @@ GEM
gravatar-ultimate (2.0.0)
activesupport (>= 2.3.14)
rack
haml (5.2.1)
haml (5.1.2)
temple (>= 0.8.0)
tilt
haml-i18n-extractor (0.5.9)
@@ -254,9 +241,8 @@ GEM
haml (>= 4.0.6, < 6.0)
html2haml (>= 1.0.1)
railties (>= 5.1)
haml_lint (0.37.1)
haml (>= 4.0, < 5.3)
parallel (~> 1.10)
haml_lint (0.35.0)
haml (>= 4.0, < 5.2)
rainbow
rubocop (>= 0.50.0)
sysexits (~> 1.1)
@@ -272,12 +258,15 @@ GEM
haml (>= 4.0, < 6)
nokogiri (>= 1.6.0)
ruby_parser (~> 3.5)
http-accept (1.7.0)
http-cookie (1.0.3)
domain_name (~> 0.5)
httparty (0.18.1)
mime-types (~> 3.0)
multi_xml (>= 0.5.2)
i18n (1.8.10)
i18n (1.8.5)
concurrent-ruby (~> 1.0)
i18n-tasks (0.9.34)
i18n-tasks (0.9.31)
activesupport (>= 4.0.2)
ast (>= 2.1.0)
erubi
@@ -288,7 +277,7 @@ GEM
rainbow (>= 2.2.2, < 4.0)
terminal-table (>= 1.5.1)
ice_nine (0.11.2)
image_processing (1.12.1)
image_processing (1.11.0)
mini_magick (>= 4.9.5, < 5)
ruby-vips (>= 2.0.17, < 3)
jquery-rails (4.4.0)
@@ -297,30 +286,31 @@ GEM
thor (>= 0.14, < 2.0)
jquery-ui-rails (6.0.1)
railties (>= 3.2.16)
js-routes (1.4.14)
js-routes (1.4.9)
railties (>= 4)
sprockets-rails
json (2.3.1)
json-schema (2.8.1)
addressable (>= 2.4)
jsonapi-resources (0.10.4)
jsonapi-resources (0.10.2)
activerecord (>= 4.1)
concurrent-ruby
railties (>= 4.1)
jsonapi-swagger (0.8.1)
jwt (2.2.2)
jsonapi-swagger (0.8.0)
jwt (2.2.1)
kgio (2.11.3)
kramdown (2.3.1)
kramdown (2.3.0)
rexml
launchy (2.5.0)
addressable (~> 2.7)
leaflet-rails (1.7.0)
leaflet-rails (1.6.0)
rails (>= 4.2.0)
letter_opener (1.7.0)
launchy (~> 2.2)
listen (3.5.1)
listen (3.2.1)
rb-fsevent (~> 0.10, >= 0.10.3)
rb-inotify (~> 0.9, >= 0.9.10)
loofah (2.9.1)
loofah (2.6.0)
crass (~> 1.0.2)
nokogiri (>= 1.5.9)
mail (2.7.1)
@@ -342,33 +332,31 @@ GEM
mime-types (3.3.1)
mime-types-data (~> 3.2015)
mime-types-data (3.2020.0512)
mimemagic (0.3.10)
nokogiri (~> 1)
rake
mini_magick (4.11.0)
mimemagic (0.3.5)
mini_magick (4.10.1)
mini_mime (1.0.2)
mini_portile2 (2.5.1)
minitest (5.14.4)
mini_portile2 (2.4.0)
minitest (5.14.1)
moneta (1.0.0)
multi_json (1.15.0)
multi_xml (0.6.0)
multipart-post (2.1.1)
nio4r (2.5.7)
nokogiri (1.11.4)
mini_portile2 (~> 2.5.0)
racc (~> 1.4)
oauth (0.5.6)
netrc (0.11.0)
nio4r (2.5.2)
nokogiri (1.10.10)
mini_portile2 (~> 2.4.0)
oauth (0.5.4)
oauth2 (1.4.4)
faraday (>= 0.8, < 2.0)
jwt (>= 1.0, < 3.0)
multi_json (~> 1.3)
multi_xml (~> 0.5)
rack (>= 1.2, < 3)
oj (3.12.1)
oj (3.10.8)
omniauth (1.9.1)
hashie (>= 3.4.6)
rack (>= 1.6.2, < 3)
omniauth-facebook (8.0.0)
omniauth-facebook (6.0.0)
omniauth-oauth2 (~> 1.2)
omniauth-flickr (0.0.20)
multi_json (~> 1.12)
@@ -376,32 +364,34 @@ GEM
omniauth-oauth (1.1.0)
oauth
omniauth (~> 1.0)
omniauth-oauth2 (1.7.0)
oauth2 (~> 1.4)
omniauth-oauth2 (1.6.0)
oauth2 (~> 1.1)
omniauth (~> 1.9)
omniauth-twitter (1.4.0)
omniauth-oauth (~> 1.1)
rack
orm_adapter (0.5.0)
parallel (1.20.1)
parser (2.7.2.0)
parallel (1.19.2)
parallel_tests (3.1.0)
parallel
parser (2.7.1.4)
ast (~> 2.4.1)
percy-capybara (4.3.3)
percy-capybara (4.0.2)
pg (0.21.0)
platform-api (3.3.0)
platform-api (3.0.0)
heroics (~> 0.1.1)
moneta (~> 1.0.0)
rate_throttle_client (~> 0.1.0)
popper_js (1.16.0)
public_suffix (4.0.6)
puma (5.3.2)
procto (0.0.3)
public_suffix (4.0.5)
puma (4.3.5)
nio4r (~> 2.0)
query_diet (0.7.0)
racc (1.5.2)
query_diet (0.6.2)
rack (2.2.3)
rack-cors (1.1.1)
rack (>= 2.0.0)
rack-protection (2.1.0)
rack-protection (2.0.8.1)
rack
rack-test (1.1.0)
rack (>= 1.0, < 3)
@@ -448,79 +438,83 @@ GEM
thor (>= 0.20.3, < 2.0)
rainbow (3.0.0)
raindrops (0.19.1)
rake (13.0.3)
rake (13.0.1)
rate_throttle_client (0.1.2)
rb-fsevent (0.10.4)
rb-inotify (0.10.1)
ffi (~> 1.0)
redis (4.2.5)
regexp_parser (2.1.1)
redis (4.2.1)
regexp_parser (1.7.1)
responders (3.0.1)
actionpack (>= 5.0)
railties (>= 5.0)
rexml (3.2.5)
rspec (3.10.0)
rspec-core (~> 3.10.0)
rspec-expectations (~> 3.10.0)
rspec-mocks (~> 3.10.0)
rest-client (2.1.0)
http-accept (>= 1.7.0, < 2.0)
http-cookie (>= 1.0.2, < 2.0)
mime-types (>= 1.16, < 4.0)
netrc (~> 0.8)
rexml (3.2.4)
rspec (3.9.0)
rspec-core (~> 3.9.0)
rspec-expectations (~> 3.9.0)
rspec-mocks (~> 3.9.0)
rspec-activemodel-mocks (1.1.0)
activemodel (>= 3.0)
activesupport (>= 3.0)
rspec-mocks (>= 2.99, < 4.0)
rspec-core (3.10.1)
rspec-support (~> 3.10.0)
rspec-expectations (3.10.1)
rspec-core (3.9.2)
rspec-support (~> 3.9.3)
rspec-expectations (3.9.2)
diff-lcs (>= 1.2.0, < 2.0)
rspec-support (~> 3.10.0)
rspec-mocks (3.10.2)
rspec-support (~> 3.9.0)
rspec-mocks (3.9.1)
diff-lcs (>= 1.2.0, < 2.0)
rspec-support (~> 3.10.0)
rspec-rails (5.0.1)
actionpack (>= 5.2)
activesupport (>= 5.2)
railties (>= 5.2)
rspec-core (~> 3.10)
rspec-expectations (~> 3.10)
rspec-mocks (~> 3.10)
rspec-support (~> 3.10)
rspec-support (3.10.2)
rspectre (0.0.3)
rspec-support (~> 3.9.0)
rspec-rails (4.0.1)
actionpack (>= 4.2)
activesupport (>= 4.2)
railties (>= 4.2)
rspec-core (~> 3.9)
rspec-expectations (~> 3.9)
rspec-mocks (~> 3.9)
rspec-support (~> 3.9)
rspec-support (3.9.3)
rspectre (0.0.1)
anima (~> 0.3)
concord (~> 0.1)
parser (~> 2.3)
rspec (~> 3.0)
rswag-api (2.4.0)
unparser (~> 0.2)
rswag-api (2.3.1)
railties (>= 3.1, < 7.0)
rswag-specs (2.4.0)
rswag-specs (2.3.1)
activesupport (>= 3.1, < 7.0)
json-schema (~> 2.2)
railties (>= 3.1, < 7.0)
rswag-ui (2.4.0)
rswag-ui (2.3.1)
actionpack (>= 3.1, < 7.0)
railties (>= 3.1, < 7.0)
rubocop (0.93.1)
rubocop (0.89.1)
parallel (~> 1.10)
parser (>= 2.7.1.5)
parser (>= 2.7.1.1)
rainbow (>= 2.2.2, < 4.0)
regexp_parser (>= 1.8)
regexp_parser (>= 1.7)
rexml
rubocop-ast (>= 0.6.0)
rubocop-ast (>= 0.3.0, < 1.0)
ruby-progressbar (~> 1.7)
unicode-display_width (>= 1.4.0, < 2.0)
rubocop-ast (1.4.1)
parser (>= 2.7.1.5)
rubocop-rails (2.9.1)
rubocop-ast (0.3.0)
parser (>= 2.7.1.4)
rubocop-rails (2.7.1)
activesupport (>= 4.2.0)
rack (>= 1.1)
rubocop (>= 0.90.0, < 2.0)
rubocop-rspec (1.44.1)
rubocop (~> 0.87)
rubocop-ast (>= 0.7.1)
ruby-progressbar (1.11.0)
ruby-units (2.3.2)
rubocop (>= 0.87.0)
rubocop-rspec (1.42.0)
rubocop (>= 0.87.0)
ruby-progressbar (1.10.1)
ruby-units (2.3.1)
ruby-vips (2.0.17)
ffi (~> 1.9)
ruby2_keywords (0.0.4)
ruby_parser (3.14.2)
sexp_processor (~> 4.9)
rubyzip (2.3.0)
@@ -539,9 +533,9 @@ GEM
sprockets (> 3.0)
sprockets-rails
tilt
scout_apm (4.0.4)
scout_apm (2.6.8)
parser
searchkick (4.4.4)
searchkick (4.4.1)
activemodel (>= 5)
elasticsearch (>= 6)
hashie
@@ -549,7 +543,7 @@ GEM
childprocess (>= 0.5, < 4.0)
rubyzip (>= 1.2.2)
sexp_processor (4.15.0)
sidekiq (6.2.1)
sidekiq (6.1.1)
connection_pool (>= 2.2.2)
rack (~> 2.0)
redis (>= 4.2.0)
@@ -561,35 +555,50 @@ GEM
sprockets (3.7.2)
concurrent-ruby (~> 1.0)
rack (> 1, < 3)
sprockets-rails (3.2.2)
sprockets-rails (3.2.1)
actionpack (>= 4.0)
activesupport (>= 4.0)
sprockets (>= 3.0.0)
ssrf_filter (1.0.7)
sync (0.5.0)
sysexits (1.2.0)
temple (0.8.2)
terminal-table (3.0.0)
term-ansicolor (1.7.1)
tins (~> 1.0)
terminal-table (1.8.0)
unicode-display_width (~> 1.1, >= 1.1.1)
thor (1.1.0)
thor (1.0.1)
thread_safe (0.3.6)
tilt (2.0.10)
timecop (0.9.4)
timecop (0.9.1)
tins (1.25.0)
sync
trollop (1.16.2)
tzinfo (1.2.9)
tzinfo (1.2.7)
thread_safe (~> 0.1)
uglifier (4.2.0)
execjs (>= 0.3.0, < 3)
unf (0.1.4)
unf_ext
unf_ext (0.0.7.7)
unicode-display_width (1.7.0)
unicorn (6.0.0)
unicorn (5.6.0)
kgio (~> 2.6)
raindrops (~> 0.7)
uniform_notifier (1.14.0)
validate_url (1.0.13)
uniform_notifier (1.13.0)
unparser (0.4.7)
abstract_type (~> 0.0.7)
adamantium (~> 0.2.0)
concord (~> 0.1.5)
diff-lcs (~> 1.3)
equalizer (~> 0.0.9)
parser (>= 2.6.5)
procto (~> 0.0.2)
validate_url (1.0.11)
activemodel (>= 3.0.0)
public_suffix
warden (1.2.9)
rack (>= 2.0.9)
webdrivers (4.6.0)
warden (1.2.8)
rack (>= 2.0.6)
webdrivers (4.4.1)
nokogiri (~> 1.6)
rubyzip (>= 1.3.0)
selenium-webdriver (>= 3.0, < 4.0)
@@ -597,18 +606,16 @@ GEM
nokogiri (>= 1.2.0)
rack (>= 1.0)
rack-test (>= 0.5.3)
webrick (1.7.0)
websocket-driver (0.7.3)
websocket-extensions (>= 0.1.0)
websocket-extensions (0.1.5)
will_paginate (3.3.0)
will_paginate-bootstrap4 (0.2.2)
will_paginate (~> 3.0, >= 3.0.0)
xmlrpc (0.3.2)
webrick
xmlrpc (0.3.0)
xpath (3.2.0)
nokogiri (~> 1.8)
zeitwerk (2.4.2)
zeitwerk (2.4.0)
PLATFORMS
ruby
@@ -634,11 +641,12 @@ DEPENDENCIES
codeclimate-test-reporter
coffee-rails
comfortable_mexican_sofa (~> 2.0.0)
coveralls
csv_shaper
dalli
database_cleaner
devise
discard (>= 1.2)
discard (~> 1.2)
dotenv-rails
elasticsearch (< 7.0.0)
factory_bot_rails
@@ -675,7 +683,8 @@ DEPENDENCIES
omniauth-facebook
omniauth-flickr (>= 0.0.15)
omniauth-twitter
percy-capybara
parallel_tests
percy-capybara (~> 4.0.0)
pg (< 1.0.0)
platform-api
puma
@@ -715,7 +724,7 @@ DEPENDENCIES
xmlrpc
RUBY VERSION
ruby 2.7.2p137
ruby 2.6.5p114
BUNDLED WITH
1.17.3

View File

@@ -1,6 +1,7 @@
# 🌱 Growstuff
![Build status](https://github.com/Growstuff/growstuff/workflows/CI/badge.svg)
[![Build Status](https://travis-ci.org/Growstuff/growstuff.svg?branch=dev)](https://travis-ci.org/Growstuff/growstuff)
[![Coverage Status](https://coveralls.io/repos/github/Growstuff/growstuff/badge.svg?branch=dev)](https://coveralls.io/github/Growstuff/growstuff?branch=dev)
[![Code Climate](https://codeclimate.com/github/Growstuff/growstuff/badges/gpa.svg)](https://codeclimate.com/github/Growstuff/growstuff)
Welcome to the Growstuff project.

View File

Binary file not shown.

Before

Width:  |  Height:  |  Size: 51 KiB

After

Width:  |  Height:  |  Size: 155 KiB

View File

Binary file not shown.

Before

Width:  |  Height:  |  Size: 8.1 KiB

After

Width:  |  Height:  |  Size: 18 KiB

View File

Binary file not shown.

Before

Width:  |  Height:  |  Size: 58 KiB

After

Width:  |  Height:  |  Size: 156 KiB

View File

File diff suppressed because one or more lines are too long

Before

Width:  |  Height:  |  Size: 221 KiB

View File

@@ -7,7 +7,7 @@
bottom: 0;
color: $white;
margin: 0;
opacity: 0.8;
opacity: .8;
position: absolute;
text-align: center;
width: 100%;
@@ -22,7 +22,7 @@
h5.crop-sci-name {
background-color: $beige;
color: $black;
font-size: 0.7em;
font-size: .7em;
margin-top: 0;
padding-top: 0;
}
@@ -45,7 +45,7 @@
.planting {
.crop-card {
height: 100%;
margin: 0.1em;
margin: .1em;
min-height: 300px;
}
@@ -85,7 +85,7 @@
@include media-breakpoint-down(xs) {
.index-cards {
.crop-thumbnail {
margin: 0.2em;
margin: .2em;
width: 30%;
}
}

View File

@@ -2,7 +2,7 @@
.text {
color: $white;
margin: 0;
opacity: 0.8;
opacity: .8;
position: absolute;
text-align: center;
top: 30%;
@@ -12,7 +12,7 @@
h3,
h4,
h5 {
margin: 0;
margin: 0
}
h3 {

View File

@@ -2,7 +2,7 @@
border-radius: 12px;
height: 200px;
margin: 1em;
padding: 0.25em;
padding: .25em;
div {
display: inline-block;
@@ -11,11 +11,12 @@
}
}
.member-thumbnail div ~ div {
.member-thumbnail div~div {
padding-left: 1em;
width: 15em;
}
.member-chip {
background-color: lighten($green, 30%);
@@ -34,7 +35,7 @@
}
.location-not-set {
background-image: image-url("location-not-set.en.png");
background-image: image-url('location-not-set.en.png');
background-position: center;
background-repeat: no-repeat;
height: 250px;

View File

@@ -15,36 +15,30 @@ $body-bg: $beige;
$text-color: $brown;
$link-color: $green;
$default-font: "Raleway", "Fira Sans", Helvetica, Arial, sans-serif;
$default-font: 'Raleway',
"Fira Sans",
Helvetica,
Arial,
sans-serif;
$primary: (
color: $green,
$primary: (color: $green,
dark: darken($green, 20%),
light: lighten($green, 20%),
);
$secondary: (
color: $blue,
light: lighten($green, 20%));
$secondary: (color: $blue,
dark: darken($blue, 20%),
light: lighten($blue, 20%),
);
$success: (
color: $green,
light: lighten($blue, 20%));
$success: (color: $green,
dark: darken($green, 20%),
light: lighten($green, 20%),
);
$danger: (
color: $red,
light: lighten($green, 20%));
$danger: (color: $red,
dark: darken($red, 20%),
light: lighten($red, 20%),
);
$dark: (
color: $brown,
light: lighten($red, 20%));
$dark: (color: $brown,
dark: darken($brown, 20%),
light: lighten($brown, 20%),
);
light: lighten($brown, 20%));
$grid-breakpoints: (
// Extra small screen / phone
$grid-breakpoints: ( // Extra small screen / phone
xs: 0,
// Small screen / phone
sm: 576px,
@@ -53,8 +47,7 @@ $grid-breakpoints: (
// Large screen / desktop
lg: 1200px,
// Extra large screen / wide desktop
xl: 1800px
);
xl: 1800px);
// Nav bar
$navbar-default-bg: $brown;

View File

@@ -1,32 +1,33 @@
// Import original variables so they can be used in overrides
@import "variables";
@import "material";
@import 'variables';
@import 'material';
@import 'jquery-ui/autocomplete';
@import 'bootstrap-datepicker';
@import 'leaflet';
@import 'leaflet.markercluster';
@import "jquery-ui/autocomplete";
@import "bootstrap-datepicker";
@import "leaflet";
@import "leaflet.markercluster";
// Font Awesome
@import "font-awesome-sprockets";
@import "font-awesome";
@import "material_icons";
@import "rails_bootstrap_forms";
@import 'font-awesome-sprockets';
@import 'font-awesome';
@import 'material_icons';
@import 'rails_bootstrap_forms';
@import "overrides";
@import "mobile";
@import 'overrides';
@import 'mobile';
@import "crops";
@import "harvests";
@import "likes";
@import "members";
@import "notifications";
@import "plantings";
@import "photos";
@import "posts";
@import "seeds";
@import 'crops';
@import 'harvests';
@import 'likes';
@import 'members';
@import 'notifications';
@import 'plantings';
@import 'photos';
@import 'posts';
@import 'seeds';
@import "predictions";
@import "homepage";
@import "maps";
@import 'predictions';
@import 'homepage';
@import 'maps';

View File

@@ -1,6 +1,7 @@
// Overrides applying only to mobile view. This must be at the end of the overrides file.
// Extra small devices (portrait phones, less than 576px)
@include media-breakpoint-down(md) {
.container {
margin: 2px;
padding: 0;
@@ -10,7 +11,7 @@
width: 100%;
}
.navbar .nav > li {
.navbar .nav>li {
display: block;
}
@@ -32,10 +33,11 @@
}
.site-name:after {
content: "";
content: '';
display: inline-block;
width: 100%;
}
}
h1 {
@@ -64,13 +66,14 @@
height: 300px;
}
section .btn {
width: 100%;
}
.index-cards {
.card {
margin: 0.2em;
margin: .2em;
width: 48%;
// Shrink title to fit more on page
@@ -84,6 +87,7 @@
object-fit: cover;
width: 100%;
}
}
}
}

View File

@@ -10,9 +10,9 @@ body {
.navbar-brand {
.site-name {
font-family: "Modak", cursive;
font-family: 'Modak', cursive;
font-size: 3em;
margin: 0.3em;
margin: .3em;
}
img {
@@ -46,6 +46,7 @@ body {
font-size: 5em;
}
.ellipsis {
overflow: hidden;
text-overflow: ellipsis;
@@ -81,8 +82,9 @@ h3 {
font-size: 120%;
}
section {
margin: 0.5em 0 0;
margin: .5em 0 0;
padding: 0 0 1em;
h2 {
@@ -90,7 +92,7 @@ section {
box-shadow: 1px 1px 1px 1px darken($beige, 20%);
color: $white;
font-weight: normal;
padding: 0.2em;
padding: .2em;
a {
color: $white;
@@ -98,16 +100,7 @@ section {
}
.card {
background: $white;
box-shadow: 1px 3px 3px 1px darken($beige, 20%);
cursor: pointer;
transition: 0.3s transform cubic-bezier(0.155, 1.105, 0.295, 1.12), 0.3s box-shadow,
0.3s -webkit-transform cubic-bezier(0.155, 1.105, 0.295, 1.12);
}
.card:hover {
box-shadow: 0 10px 20px darken($beige, 30%), 0 4px 8px darken($beige, 40%);
transform: scale(1.1);
}
}
@@ -124,7 +117,7 @@ section {
.card {
background: $white;
border-radius: 5%;
margin: 0.5em 0.5em 0.5em 0;
margin: .5em .5em .5em 0;
width: 200px;
.img-card {
@@ -239,6 +232,7 @@ ul.associations {
// footer
footer {
#footer1,
#footer2,
#footer3 {
@@ -376,7 +370,7 @@ ul.thumbnail-buttons {
}
.info {
padding: 0.5em;
padding: .5em;
text-align: center;
}
}
@@ -392,7 +386,7 @@ ul.thumbnail-buttons {
display: inline-block;
height: 30px;
line-height: 30px;
margin: 0.2em;
margin: .2em;
padding: 0 25px;
a {
@@ -417,14 +411,14 @@ ul.thumbnail-buttons {
.progress-fade::before {
background: $beige;
bottom: 0;
content: "";
content: '';
display: block;
left: 0;
opacity: 0.7;
opacity: .7;
position: absolute;
right: 0;
top: 0;
transition: background 0.3s linear;
transition: background .3s linear;
}
.progress-fade:hover::before {

View File

@@ -62,6 +62,9 @@ class CropsController < ApplicationController
end
def show
@crop = Crop.includes(
:scientific_names, :alternate_names, :parent, :varieties
).find_by!(slug: params[:slug])
respond_to do |format|
format.html do
@posts = @crop.posts.order(created_at: :desc).paginate(page: params[:page])
@@ -86,6 +89,7 @@ class CropsController < ApplicationController
end
def edit
@crop = Crop.find_by!(slug: params[:slug])
@crop.alternate_names.build if @crop.alternate_names.blank?
@crop.scientific_names.build if @crop.scientific_names.blank?
end
@@ -106,13 +110,14 @@ class CropsController < ApplicationController
end
def update
@crop = Crop.find_by!(slug: params[:slug])
if can?(:wrangle, @crop)
@crop.approval_status = 'rejected' if params.fetch("reject", false)
@crop.approval_status = 'approved' if params.fetch("approve", false)
end
@crop.creator = current_member if @crop.approval_status == "pending"
if @crop.update(crop_params)
recreate_names('alt_name', 'alternate')
recreate_names('sci_name', 'scientific')
@@ -147,8 +152,12 @@ class CropsController < ApplicationController
end
def save_crop_names
AlternateName.create!(names_params(:alt_name).map { |n| { name: n, creator_id: current_member.id, crop_id: @crop.id } })
ScientificName.create!(names_params(:sci_name).map { |n| { name: n, creator_id: current_member.id, crop_id: @crop.id } })
params[:alt_name]&.values&.each do |value|
create_name!('alternate', value) unless value.empty?
end
params[:sci_name]&.values&.each do |value|
create_name!('scientific', value) unless value.empty?
end
end
def notify_wranglers
@@ -178,18 +187,19 @@ class CropsController < ApplicationController
def crop_params
params.require(:crop).permit(
:name, :en_wikipedia_url,
:parent_id, :perennial,
:request_notes, :reason_for_rejection,
:en_wikipedia_url,
:name,
:parent_id,
:perennial,
:request_notes,
:reason_for_rejection,
:rejection_notes,
scientific_names_attributes: %i(scientific_name _destroy id)
scientific_names_attributes: %i(scientific_name
_destroy
id)
)
end
def names_params(name_type)
params.require(name_type).values&.reject { |n| n.empty? }
end
def filename
"Growstuff-Crops-#{Time.zone.now.to_s(:number)}.csv"
end
@@ -202,7 +212,8 @@ class CropsController < ApplicationController
owner: { only: %i(id login_name location latitude longitude) }
}
},
scientific_names: { only: [:name] }, alternate_names: { only: [:name] }
scientific_names: { only: [:name] },
alternate_names: { only: [:name] }
}
}
end

View File

@@ -92,15 +92,8 @@ class PhotosController < ApplicationController
def retrieve_from_flickr
@flickr_auth = current_member.auth('flickr')
return if @flickr_auth.nil?
unless current_member.flickr_auth_valid?
current_member.remove_stale_flickr_auth
@please_reconnect_flickr = true
return
end
@current_set = params[:set]
return unless @flickr_auth
page = params[:page] || 1

View File

@@ -17,7 +17,7 @@ class PlantingsController < DataController
if params[:crop_slug]
@crop = Crop.find_by(slug: params[:crop_slug])
where['crop_id'] = @crop.id unless @crop.nil?
where['crop_id'] = @crop.id
end
@plantings = Planting.search(

View File

@@ -19,24 +19,6 @@ module MemberFlickr
@flickr
end
def flickr_auth_valid?
# no flickr token saved for this member
return false if flickr.nil?
# test the token/secret we have
flickr.test.login # This throws exception if fails
# success!
true
rescue FlickRaw::FailedResponse, FlickRaw::OAuthClient::FailedResponse
# token for this user doesn't work
false
end
def remove_stale_flickr_auth
authentications.find_by(provider: "flickr")&.delete
end
# Fetches a collection of photos from Flickr
# Returns a [[page of photos], total] pair.
# Total is needed for pagination.

View File

@@ -22,7 +22,7 @@
- else
Nobody is growing this yet. You could be the first!
- if @crop.description.present?
%p= simple_format @crop.description
%p= @crop.description
.col-md-3
= image_tag crop_image_path(@crop),
class: 'img-responsive shadow rounded crop-hero-photo', alt: 'photo of crop'

View File

@@ -34,21 +34,18 @@
= cute_icon
= render 'crops/photos', crop: @crop
- if @crop.plantings.any? or @crop.harvests.any?
- if @crop.plantings.any?
%section.charts
.row
- if @crop.sunniness.any?
.col-lg-4.col-12
%h2 Sunniness
= pie_chart crop_sunniness_path(@crop, format: :json), legend: "bottom"
- if @crop.planted_from.any?
.col-lg-4.col-12
%h2 Planted from
= pie_chart crop_planted_from_path(@crop, format: :json), legend: "bottom"
- if @crop.harvests.any?
.col-lg-4.col-12
%h2 Harvested for
= pie_chart crop_harvested_for_path(@crop, format: :json), legend: "bottom"
.col-lg-4.col-12
%h2 Sunniness
= pie_chart crop_sunniness_path(@crop, format: :json), legend: "bottom"
.col-lg-4.col-12
%h2 Planted from
= pie_chart crop_planted_from_path(@crop, format: :json), legend: "bottom"
.col-lg-4.col-12
%h2 Harvested for
= pie_chart crop_harvested_for_path(@crop, format: :json), legend: "bottom"
- if @crop.varieties.any?
%section.varieties

View File

@@ -3,13 +3,13 @@
- if signed_in?
%li.nav-item
= link_to timeline_index_path, method: :get, class: 'nav-link text-white' do
= image_tag 'icons/notification.svg', alt: 'Timeline', class: 'img img-icon'
= image_tag 'icons/notification.svg', class: 'img img-icon'
%li.nav-item
= link_to member_gardens_path(current_member), class: 'nav-link text-white' do
= image_icon 'gardens', alt: 'My gardens'
= image_icon 'gardens'
%li.nav-item.dropdown
%a.nav-link.dropdown-toggle{"aria-expanded" => "false", "aria-haspopup" => "true", "data-toggle" => "dropdown", href: "#", role: "button"}
= image_tag "icons/gardener.svg", alt: 'New record', class: 'img img-icon'
= image_tag "icons/gardener.svg", class: 'img img-icon'
= t('.record')
.dropdown-menu
= link_to new_planting_path, class: 'dropdown-item' do

View File

@@ -3,17 +3,7 @@
%h1 New Photo
%h2 Choose photo for #{link_to @item, @item}
- if @please_reconnect_flickr
%h2.alert Please reconnect your flickr account
%p the token has expired or been revoked.
= link_to '/members/auth/flickr', class: "btn btn-lg" do
= icon 'fab', 'flickr'
Reconnect Flickr
- elsif @flickr_auth
- if @flickr_auth
%p
Connected to Flickr as
= succeed "." do
@@ -47,9 +37,7 @@
.row.pagination
.col-md-12= will_paginate @photos
- else
%h2.alert You must connect your account to Flickr to add photos.
%p
= link_to '/members/auth/flickr', class: :btn do
= icon 'fab', 'flickr'
connect to Flickr
.alert
You must
= link_to "connect your account to Flickr", '/members/auth/flickr'
to add photos.

View File

@@ -4,7 +4,7 @@ development:
test:
adapter: postgresql
database: growstuff_test
database: growstuff_test<%= ENV['TEST_ENV_NUMBER'] %>
production:
adapter: postgresql

View File

@@ -1,16 +1,10 @@
development:
adapter: postgresql
database: growstuff_dev
host: localhost
user: postgres
password: postgres
test:
adapter: postgresql
database: growstuff_test
host: localhost
user: postgres
password: postgres
database: growstuff_test<%= ENV['TEST_ENV_NUMBER'] %>
production:
adapter: postgresql

View File

@@ -2,5 +2,5 @@
Rails.application.config.middleware.use OmniAuth::Builder do
provider :twitter, ENV['GROWSTUFF_TWITTER_KEY'], ENV['GROWSTUFF_TWITTER_SECRET']
provider :flickr, ENV['GROWSTUFF_FLICKR_KEY'], ENV['GROWSTUFF_FLICKR_SECRET'], scope: 'read'
provider :flickr, ENV['GROWSTUFF_FLICKR_KEY'], ENV['GROWSTUFF_FLICKR_SECRET']
end

View File

@@ -61,5 +61,3 @@ GROWSTUFF_FACEBOOK_SECRET=""
# set this flag to "true".
GROWSTUFF_ELASTICSEARCH="true"
GROWSTUFF_EMAIL='noreply@dev.growstuff.org'
ELASTIC_SEARCH_VERSION="7.5.1-amd64"

View File

@@ -3,8 +3,7 @@
# tasks to run at deploy time, usually after 'rake db:migrate'
# Permanent tasks
rails db:migrate
rails assets:precompile
rake assets:precompile
# When adding tasks, do so in chronological order, and note the date
# when it was added. This will help us know which ones have been run

View File

@@ -70,32 +70,6 @@ describe CropsController do
end
end
describe 'CREATE' do
let(:crop_params) do
{
crop: {
name: 'aubergine',
en_wikipedia_url: "https://en.wikipedia.org/wiki/Eggplant"
},
alt_name: { "1": "egg plant", "2": "purple apple" },
sci_name: { "1": "fancy sci name", "2": "" }
}
end
subject { put :create, params: crop_params }
context 'not logged in' do
it { expect { subject }.not_to change(Crop, :count) }
end
context 'logged in as member' do
it { expect { subject }.not_to change(Crop, :count) }
end
context 'wrangler' do
include_context 'login as wrangler'
it { expect { subject }.to change(Crop, :count).by(1) }
it { expect { subject }.to change(AlternateName, :count).by(2) }
it { expect { subject }.to change(ScientificName, :count).by(1) }
end
end
describe 'DELETE destroy' do
subject { delete :destroy, params: { slug: crop.to_param } }

View File

@@ -4,7 +4,7 @@ require 'rails_helper'
require 'capybara/email/rspec'
describe "Planting reminder email", :js do
let(:member) { create :member }
let(:member) { create :member }
let(:mail) { NotifierMailer.planting_reminder(member) }
# Unfortunately, we can't use the default url options for ActionMailer as configured in

View File

@@ -3,9 +3,13 @@
# This file is copied to spec/ when you run 'rails generate rspec:install'
ENV["RAILS_ENV"] ||= 'test'
require 'simplecov'
require 'coveralls'
# output coverage locally AND send it to coveralls
SimpleCov.formatter = SimpleCov::Formatter::MultiFormatter.new([SimpleCov::Formatter::HTMLFormatter])
SimpleCov.formatter = SimpleCov::Formatter::MultiFormatter.new([
SimpleCov::Formatter::HTMLFormatter,
Coveralls::SimpleCov::Formatter
])
# fail if there's a significant test coverage drop
SimpleCov.maximum_coverage_drop 1

View File

@@ -1,49 +0,0 @@
# frozen_string_literal: true
require 'rails_helper'
describe "crops/show" do
before do
@crop = FactoryBot.create(:maize)
@posts = []
assign(:crop, @crop)
@member = FactoryBot.create(:crop_wrangling_member)
sign_in @member
@current_member = @member
@harvest = FactoryBot.create :harvest, owner: @member
controller.stub(:current_user) { @member }
end
it "hides sunniness block if no sunniness" do
render
expect(rendered).not_to have_content "Sunniness"
end
it "has sunniness block if sunny planting" do
FactoryBot.create(:sunny_planting, crop: @crop)
render
expect(rendered).to have_content "Sunniness"
end
it "hides planted from block if no planted_from" do
render
expect(rendered).not_to have_content "Planted from"
end
it "has planted from block if seed planting" do
FactoryBot.create(:seed_planting, crop: @crop)
render
expect(rendered).to have_content "Planted from"
end
it "hides harvested block if no harvests" do
render
expect(rendered).not_to have_content "Harvested for"
end
it "has harvested block if harvest" do
@crop.harvests << @harvest
render
expect(rendered).to have_content "Harvested for"
end
end

View File

@@ -1452,9 +1452,9 @@ lodash.templatesettings@^4.0.0:
lodash._reinterpolate "^3.0.0"
lodash@^4.17.11, lodash@^4.17.4, lodash@^4.3.0, lodash@~4.17.10:
version "4.17.21"
resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.21.tgz#679591c564c3bffaae8454cf0b3df370c3d6911c"
integrity sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==
version "4.17.14"
resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.14.tgz#9ce487ae66c96254fe20b599f21b6816028078ba"
integrity sha512-mmKYbW3GLuJeX+iGP+Y7Gp1AiGHGbXHCOh/jZmrawMmsE7MS4znI3RL2FsjbqOyMayHInjOeykW7PEajUk1/xw==
lru-cache@^4.0.1:
version "4.1.5"