mirror of
https://github.com/Growstuff/growstuff.git
synced 2026-05-25 01:13:03 -04:00
Compare commits
94 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
b8f7f95f32 | ||
|
|
f216ddc368 | ||
|
|
967c0f4638 | ||
|
|
cac0e3cb12 | ||
|
|
65406b9e56 | ||
|
|
224109aaf8 | ||
|
|
bec1ec1879 | ||
|
|
e88e54b0c1 | ||
|
|
76a6c1d849 | ||
|
|
b7f4de782d | ||
|
|
112a626941 | ||
|
|
b72aeab136 | ||
|
|
a7d100fe7e | ||
|
|
810a9e39e3 | ||
|
|
b320435ddf | ||
|
|
2f7ce2721f | ||
|
|
c9e19203a9 | ||
|
|
005efab3be | ||
|
|
46599937d9 | ||
|
|
496a6ac2b6 | ||
|
|
9efb1f8486 | ||
|
|
59bd6f3450 | ||
|
|
3e9bf73297 | ||
|
|
dcff643637 | ||
|
|
a83966aa92 | ||
|
|
1c47e421b9 | ||
|
|
6289ab0951 | ||
|
|
d127647eeb | ||
|
|
9eda4bb2f2 | ||
|
|
f1d524130b | ||
|
|
e4de08f47f | ||
|
|
0b4820e5df | ||
|
|
d264905aa9 | ||
|
|
25d2c5f854 | ||
|
|
d383c8e2e4 | ||
|
|
ed89163311 | ||
|
|
6ae2de7e47 | ||
|
|
da74c19c2a | ||
|
|
d767a011a4 | ||
|
|
bbe6a3fd36 | ||
|
|
3eb2fe7637 | ||
|
|
7f0af10637 | ||
|
|
75d93bb3c3 | ||
|
|
c49f2bab19 | ||
|
|
ed71023306 | ||
|
|
59d95dfd77 | ||
|
|
e999c5870f | ||
|
|
072ec1dd82 | ||
|
|
8ecae23d61 | ||
|
|
d20ceb54b5 | ||
|
|
7e3be99aac | ||
|
|
d99d4a1bbe | ||
|
|
ea530754aa | ||
|
|
4bd322d8ca | ||
|
|
5fc41ca50f | ||
|
|
d0d31edd5e | ||
|
|
67a2005f1e | ||
|
|
b528b40052 | ||
|
|
3b17265a92 | ||
|
|
f8c93f16db | ||
|
|
8006d26c6e | ||
|
|
2766082696 | ||
|
|
d887d5c788 | ||
|
|
0634719afc | ||
|
|
a13cf93aeb | ||
|
|
04376f15a2 | ||
|
|
82d3f84e0c | ||
|
|
af6cee2f16 | ||
|
|
4f705ff37b | ||
|
|
4829d5513c | ||
|
|
d1419aaca4 | ||
|
|
2458afc451 | ||
|
|
278be7067f | ||
|
|
bc71c4a706 | ||
|
|
b1a42a2ed6 | ||
|
|
fe22c92a63 | ||
|
|
f00b31cf46 | ||
|
|
7cfee1d89c | ||
|
|
6c89cef5bc | ||
|
|
5d79aa3e60 | ||
|
|
29c8d87703 | ||
|
|
83ef779c11 | ||
|
|
4ada3e1585 | ||
|
|
88f5622d0c | ||
|
|
fa6752c668 | ||
|
|
f9186c1a8a | ||
|
|
82dcd1d86c | ||
|
|
b2146e791f | ||
|
|
a9c33a30d2 | ||
|
|
497cb6627d | ||
|
|
a8a96ae125 | ||
|
|
4dcafdb117 | ||
|
|
bd132c32fa | ||
|
|
534d493693 |
2
.github/workflows/ci-features-admin.yml
vendored
2
.github/workflows/ci-features-admin.yml
vendored
@@ -38,7 +38,7 @@ jobs:
|
||||
|
||||
steps:
|
||||
- name: Checkout this repo
|
||||
uses: actions/checkout@v4
|
||||
uses: actions/checkout@v5
|
||||
|
||||
- name: Configure sysctl limits
|
||||
run: |
|
||||
|
||||
2
.github/workflows/ci-features-comments.yml
vendored
2
.github/workflows/ci-features-comments.yml
vendored
@@ -38,7 +38,7 @@ jobs:
|
||||
|
||||
steps:
|
||||
- name: Checkout this repo
|
||||
uses: actions/checkout@v4
|
||||
uses: actions/checkout@v5
|
||||
|
||||
- name: Configure sysctl limits
|
||||
run: |
|
||||
|
||||
@@ -38,7 +38,7 @@ jobs:
|
||||
|
||||
steps:
|
||||
- name: Checkout this repo
|
||||
uses: actions/checkout@v4
|
||||
uses: actions/checkout@v5
|
||||
|
||||
- name: Configure sysctl limits
|
||||
run: |
|
||||
|
||||
2
.github/workflows/ci-features-crops.yml
vendored
2
.github/workflows/ci-features-crops.yml
vendored
@@ -38,7 +38,7 @@ jobs:
|
||||
|
||||
steps:
|
||||
- name: Checkout this repo
|
||||
uses: actions/checkout@v4
|
||||
uses: actions/checkout@v5
|
||||
|
||||
- name: Configure sysctl limits
|
||||
run: |
|
||||
|
||||
2
.github/workflows/ci-features-gardens.yml
vendored
2
.github/workflows/ci-features-gardens.yml
vendored
@@ -38,7 +38,7 @@ jobs:
|
||||
|
||||
steps:
|
||||
- name: Checkout this repo
|
||||
uses: actions/checkout@v4
|
||||
uses: actions/checkout@v5
|
||||
|
||||
- name: Configure sysctl limits
|
||||
run: |
|
||||
|
||||
2
.github/workflows/ci-features-harvests.yml
vendored
2
.github/workflows/ci-features-harvests.yml
vendored
@@ -38,7 +38,7 @@ jobs:
|
||||
|
||||
steps:
|
||||
- name: Checkout this repo
|
||||
uses: actions/checkout@v4
|
||||
uses: actions/checkout@v5
|
||||
|
||||
- name: Configure sysctl limits
|
||||
run: |
|
||||
|
||||
2
.github/workflows/ci-features-home.yml
vendored
2
.github/workflows/ci-features-home.yml
vendored
@@ -38,7 +38,7 @@ jobs:
|
||||
|
||||
steps:
|
||||
- name: Checkout this repo
|
||||
uses: actions/checkout@v4
|
||||
uses: actions/checkout@v5
|
||||
|
||||
- name: Configure sysctl limits
|
||||
run: |
|
||||
|
||||
2
.github/workflows/ci-features-members.yml
vendored
2
.github/workflows/ci-features-members.yml
vendored
@@ -38,7 +38,7 @@ jobs:
|
||||
|
||||
steps:
|
||||
- name: Checkout this repo
|
||||
uses: actions/checkout@v4
|
||||
uses: actions/checkout@v5
|
||||
|
||||
- name: Configure sysctl limits
|
||||
run: |
|
||||
|
||||
102
.github/workflows/ci-features-places.yml
vendored
Normal file
102
.github/workflows/ci-features-places.yml
vendored
Normal file
@@ -0,0 +1,102 @@
|
||||
name: CI Features - Admin
|
||||
|
||||
on: [pull_request]
|
||||
|
||||
jobs:
|
||||
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@v5
|
||||
|
||||
- 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@v4
|
||||
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@v4
|
||||
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 (places/)
|
||||
run: bundle exec rspec spec/features/places/ -fd
|
||||
2
.github/workflows/ci-features-plantings.yml
vendored
2
.github/workflows/ci-features-plantings.yml
vendored
@@ -38,7 +38,7 @@ jobs:
|
||||
|
||||
steps:
|
||||
- name: Checkout this repo
|
||||
uses: actions/checkout@v4
|
||||
uses: actions/checkout@v5
|
||||
|
||||
- name: Configure sysctl limits
|
||||
run: |
|
||||
|
||||
102
.github/workflows/ci-features-posts.yml
vendored
Normal file
102
.github/workflows/ci-features-posts.yml
vendored
Normal file
@@ -0,0 +1,102 @@
|
||||
name: CI Features - Admin
|
||||
|
||||
on: [pull_request]
|
||||
|
||||
jobs:
|
||||
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@v5
|
||||
|
||||
- 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@v4
|
||||
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@v4
|
||||
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 (posts/)
|
||||
run: bundle exec rspec spec/features/posts/ -fd
|
||||
2
.github/workflows/ci-features-seeds.yml
vendored
2
.github/workflows/ci-features-seeds.yml
vendored
@@ -38,7 +38,7 @@ jobs:
|
||||
|
||||
steps:
|
||||
- name: Checkout this repo
|
||||
uses: actions/checkout@v4
|
||||
uses: actions/checkout@v5
|
||||
|
||||
- name: Configure sysctl limits
|
||||
run: |
|
||||
|
||||
2
.github/workflows/ci-features-timeline.yml
vendored
2
.github/workflows/ci-features-timeline.yml
vendored
@@ -38,7 +38,7 @@ jobs:
|
||||
|
||||
steps:
|
||||
- name: Checkout this repo
|
||||
uses: actions/checkout@v4
|
||||
uses: actions/checkout@v5
|
||||
|
||||
- name: Configure sysctl limits
|
||||
run: |
|
||||
|
||||
11
.github/workflows/ci-features.yml
vendored
11
.github/workflows/ci-features.yml
vendored
@@ -38,7 +38,7 @@ jobs:
|
||||
|
||||
steps:
|
||||
- name: Checkout this repo
|
||||
uses: actions/checkout@v4
|
||||
uses: actions/checkout@v5
|
||||
|
||||
- name: Configure sysctl limits
|
||||
run: |
|
||||
@@ -107,14 +107,5 @@ jobs:
|
||||
- name: Run rspec (photos/)
|
||||
run: bundle exec rspec spec/features/photos/ -fd
|
||||
|
||||
- name: Run rspec (places/)
|
||||
run: bundle exec rspec spec/features/places/ -fd
|
||||
|
||||
- name: Run rspec (plantings/)
|
||||
run: bundle exec rspec spec/features/plantings/ -fd
|
||||
|
||||
- name: Run rspec (posts/)
|
||||
run: bundle exec rspec spec/features/posts/ -fd
|
||||
|
||||
- name: Run rspec (rss/)
|
||||
run: bundle exec rspec spec/features/rss/ -fd
|
||||
4
.github/workflows/ci.yml
vendored
4
.github/workflows/ci.yml
vendored
@@ -6,7 +6,7 @@ jobs:
|
||||
contributors:
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- uses: actions/checkout@v4
|
||||
- uses: actions/checkout@v5
|
||||
- name: Install ruby version specified in .ruby-version
|
||||
uses: ruby/setup-ruby@v1
|
||||
with:
|
||||
@@ -53,7 +53,7 @@ jobs:
|
||||
|
||||
steps:
|
||||
- name: Checkout this repo
|
||||
uses: actions/checkout@v4
|
||||
uses: actions/checkout@v5
|
||||
|
||||
- name: Configure sysctl limits
|
||||
run: |
|
||||
|
||||
@@ -1 +1 @@
|
||||
3.3.7
|
||||
3.3.8
|
||||
|
||||
@@ -12,6 +12,7 @@ submit the change with your pull request.
|
||||
- Miles Gould / [pozorvlak](https://github.com/pozorvlak)
|
||||
- Mackenzie Morgan / [maco](https://github.com/maco)
|
||||
- Brenda Wallace / [br3nda](https://github.com/br3nda)
|
||||
- Daniel O'Connor / [CloCkWeRX](https://github.com/CloCkWeRX)
|
||||
|
||||
## Contributors
|
||||
|
||||
@@ -68,7 +69,6 @@ submit the change with your pull request.
|
||||
- Jym Paul Carandang / [jacarandang](https://github.com/jacarandang)
|
||||
- Anthony Atkinson / [sha1sum](https://github.com/sha1sum)
|
||||
- Terence Conquest / [twconquest](https://github.com/twconquest)
|
||||
- Daniel O'Connor / [CloCkWeRX](https://github.com/CloCkWeRX)
|
||||
- DV Dasari / [dv2](https://github.com/dv2)
|
||||
- Eric Tillberg / [Thrillberg](https://github.com/Thrillberg)
|
||||
- Lucas Nogueira / [lucasnogueira](https://github.com/lucasnogueira)
|
||||
@@ -95,10 +95,11 @@ submit the change with your pull request.
|
||||
- Ítalo Pires / [italopires](https://github.com/italopires)
|
||||
- Bennett Zink / [bennett-zink](https://github.com/bennett-zink)
|
||||
- Dominick Thornton / [domthor](https://github.com/domthor)
|
||||
|
||||
|
||||
## Bots
|
||||
|
||||
### Security and Dependency Updates
|
||||
- `codefactor-io[bot]`
|
||||
- DeppBot / [deppbot](https://github.com/deppbot)
|
||||
- `dependabot[bot]` [dependabot](https://github.com/dependabot-bot) / [dependabot-preview](https://github.com/apps/dependabot-preview)
|
||||
- [google-labs-jules[bot]](https://github.com/apps/google-labs-jules)
|
||||
|
||||
5
Gemfile
5
Gemfile
@@ -175,6 +175,7 @@ group :development, :test do
|
||||
gem 'rubocop-rspec_rails'
|
||||
gem 'webrat' # provides HTML matchers for view tests
|
||||
|
||||
gem 'crowdin-cli' # for translations
|
||||
gem 'dotenv-rails'
|
||||
|
||||
# cli utils
|
||||
@@ -192,10 +193,12 @@ group :test do
|
||||
gem 'selenium-webdriver'
|
||||
gem 'timecop'
|
||||
gem 'vcr'
|
||||
gem "rspec-rebound"
|
||||
gem "percy-capybara", "~> 5.0.0"
|
||||
end
|
||||
|
||||
group :travis do
|
||||
gem 'platform-api'
|
||||
end
|
||||
|
||||
gem "percy-capybara", "~> 5.0.0"
|
||||
|
||||
|
||||
235
Gemfile.lock
235
Gemfile.lock
@@ -33,29 +33,29 @@ GEM
|
||||
GEM
|
||||
remote: https://rubygems.org/
|
||||
specs:
|
||||
actioncable (7.2.2.1)
|
||||
actionpack (= 7.2.2.1)
|
||||
activesupport (= 7.2.2.1)
|
||||
actioncable (7.2.2.2)
|
||||
actionpack (= 7.2.2.2)
|
||||
activesupport (= 7.2.2.2)
|
||||
nio4r (~> 2.0)
|
||||
websocket-driver (>= 0.6.1)
|
||||
zeitwerk (~> 2.6)
|
||||
actionmailbox (7.2.2.1)
|
||||
actionpack (= 7.2.2.1)
|
||||
activejob (= 7.2.2.1)
|
||||
activerecord (= 7.2.2.1)
|
||||
activestorage (= 7.2.2.1)
|
||||
activesupport (= 7.2.2.1)
|
||||
actionmailbox (7.2.2.2)
|
||||
actionpack (= 7.2.2.2)
|
||||
activejob (= 7.2.2.2)
|
||||
activerecord (= 7.2.2.2)
|
||||
activestorage (= 7.2.2.2)
|
||||
activesupport (= 7.2.2.2)
|
||||
mail (>= 2.8.0)
|
||||
actionmailer (7.2.2.1)
|
||||
actionpack (= 7.2.2.1)
|
||||
actionview (= 7.2.2.1)
|
||||
activejob (= 7.2.2.1)
|
||||
activesupport (= 7.2.2.1)
|
||||
actionmailer (7.2.2.2)
|
||||
actionpack (= 7.2.2.2)
|
||||
actionview (= 7.2.2.2)
|
||||
activejob (= 7.2.2.2)
|
||||
activesupport (= 7.2.2.2)
|
||||
mail (>= 2.8.0)
|
||||
rails-dom-testing (~> 2.2)
|
||||
actionpack (7.2.2.1)
|
||||
actionview (= 7.2.2.1)
|
||||
activesupport (= 7.2.2.1)
|
||||
actionpack (7.2.2.2)
|
||||
actionview (= 7.2.2.2)
|
||||
activesupport (= 7.2.2.2)
|
||||
nokogiri (>= 1.8.5)
|
||||
racc
|
||||
rack (>= 2.2.4, < 3.2)
|
||||
@@ -64,15 +64,15 @@ GEM
|
||||
rails-dom-testing (~> 2.2)
|
||||
rails-html-sanitizer (~> 1.6)
|
||||
useragent (~> 0.16)
|
||||
actiontext (7.2.2.1)
|
||||
actionpack (= 7.2.2.1)
|
||||
activerecord (= 7.2.2.1)
|
||||
activestorage (= 7.2.2.1)
|
||||
activesupport (= 7.2.2.1)
|
||||
actiontext (7.2.2.2)
|
||||
actionpack (= 7.2.2.2)
|
||||
activerecord (= 7.2.2.2)
|
||||
activestorage (= 7.2.2.2)
|
||||
activesupport (= 7.2.2.2)
|
||||
globalid (>= 0.6.0)
|
||||
nokogiri (>= 1.8.5)
|
||||
actionview (7.2.2.1)
|
||||
activesupport (= 7.2.2.1)
|
||||
actionview (7.2.2.2)
|
||||
activesupport (= 7.2.2.2)
|
||||
builder (~> 3.1)
|
||||
erubi (~> 1.11)
|
||||
rails-dom-testing (~> 2.2)
|
||||
@@ -87,22 +87,22 @@ GEM
|
||||
active_utils (3.5.0)
|
||||
activesupport (>= 4.2)
|
||||
i18n
|
||||
activejob (7.2.2.1)
|
||||
activesupport (= 7.2.2.1)
|
||||
activejob (7.2.2.2)
|
||||
activesupport (= 7.2.2.2)
|
||||
globalid (>= 0.3.6)
|
||||
activemodel (7.2.2.1)
|
||||
activesupport (= 7.2.2.1)
|
||||
activerecord (7.2.2.1)
|
||||
activemodel (= 7.2.2.1)
|
||||
activesupport (= 7.2.2.1)
|
||||
activemodel (7.2.2.2)
|
||||
activesupport (= 7.2.2.2)
|
||||
activerecord (7.2.2.2)
|
||||
activemodel (= 7.2.2.2)
|
||||
activesupport (= 7.2.2.2)
|
||||
timeout (>= 0.4.0)
|
||||
activestorage (7.2.2.1)
|
||||
actionpack (= 7.2.2.1)
|
||||
activejob (= 7.2.2.1)
|
||||
activerecord (= 7.2.2.1)
|
||||
activesupport (= 7.2.2.1)
|
||||
activestorage (7.2.2.2)
|
||||
actionpack (= 7.2.2.2)
|
||||
activejob (= 7.2.2.2)
|
||||
activerecord (= 7.2.2.2)
|
||||
activesupport (= 7.2.2.2)
|
||||
marcel (~> 1.0)
|
||||
activesupport (7.2.2.1)
|
||||
activesupport (7.2.2.2)
|
||||
base64
|
||||
benchmark (>= 0.3)
|
||||
bigdecimal
|
||||
@@ -156,7 +156,7 @@ GEM
|
||||
actionpack (>= 6.1)
|
||||
activemodel (>= 6.1)
|
||||
builder (3.3.0)
|
||||
bullet (8.0.7)
|
||||
bullet (8.0.8)
|
||||
activesupport (>= 3.0.0)
|
||||
uniform_notifier (~> 1.11)
|
||||
byebug (12.0.0)
|
||||
@@ -200,6 +200,14 @@ GEM
|
||||
concurrent-ruby (1.3.5)
|
||||
connection_pool (2.5.3)
|
||||
crass (1.0.6)
|
||||
crowdin-api (1.12.0)
|
||||
open-uri (>= 0.1.0, < 0.2.0)
|
||||
rest-client (>= 2.0.0, < 2.2.0)
|
||||
crowdin-cli (0.2.2)
|
||||
crowdin-api (>= 0.2.0)
|
||||
gli (>= 2.7.0)
|
||||
i18n (>= 0.6.4)
|
||||
rubyzip (>= 1.0.0)
|
||||
csv (3.3.1)
|
||||
csv_shaper (1.4.0)
|
||||
activesupport (>= 3.0.0)
|
||||
@@ -220,10 +228,10 @@ GEM
|
||||
railties (>= 4.1.0)
|
||||
responders
|
||||
warden (~> 1.2.3)
|
||||
diff-lcs (1.6.1)
|
||||
diff-lcs (1.6.2)
|
||||
discard (1.4.0)
|
||||
activerecord (>= 4.2, < 9.0)
|
||||
docile (1.1.5)
|
||||
domain_name (0.6.20240107)
|
||||
dotenv (3.1.8)
|
||||
dotenv-rails (3.1.8)
|
||||
dotenv (= 3.1.8)
|
||||
@@ -243,24 +251,24 @@ GEM
|
||||
elasticsearch-transport (7.0.0)
|
||||
faraday
|
||||
multi_json
|
||||
erb (5.0.1)
|
||||
erb (5.0.2)
|
||||
erubi (1.13.1)
|
||||
erubis (2.7.0)
|
||||
excon (1.2.5)
|
||||
logger
|
||||
execjs (2.10.0)
|
||||
factory_bot (6.5.0)
|
||||
activesupport (>= 5.0.0)
|
||||
factory_bot_rails (6.4.4)
|
||||
factory_bot (6.5.4)
|
||||
activesupport (>= 6.1.0)
|
||||
factory_bot_rails (6.5.0)
|
||||
factory_bot (~> 6.5)
|
||||
railties (>= 5.0.0)
|
||||
faker (3.5.1)
|
||||
railties (>= 6.1.0)
|
||||
faker (3.5.2)
|
||||
i18n (>= 1.8.11, < 2)
|
||||
faraday (2.13.1)
|
||||
faraday (2.13.4)
|
||||
faraday-net_http (>= 2.0, < 3.5)
|
||||
json
|
||||
logger
|
||||
faraday-net_http (3.4.0)
|
||||
faraday-net_http (3.4.1)
|
||||
net-http (>= 0.5.0)
|
||||
ffi (1.16.3)
|
||||
flickraw (0.9.10)
|
||||
@@ -275,6 +283,8 @@ GEM
|
||||
gibbon (1.2.1)
|
||||
httparty
|
||||
multi_json (>= 1.9.0)
|
||||
gli (2.22.2)
|
||||
ostruct
|
||||
globalid (1.2.1)
|
||||
activesupport (>= 6.1)
|
||||
gravatar-ultimate (2.0.0)
|
||||
@@ -295,7 +305,7 @@ GEM
|
||||
activesupport (>= 5.1)
|
||||
haml (>= 4.0.6)
|
||||
railties (>= 5.1)
|
||||
haml_lint (0.62.0)
|
||||
haml_lint (0.66.0)
|
||||
haml (>= 5.0)
|
||||
parallel (~> 1.10)
|
||||
rainbow
|
||||
@@ -311,6 +321,9 @@ GEM
|
||||
webrick
|
||||
highline (3.1.2)
|
||||
reline
|
||||
http-accept (1.7.0)
|
||||
http-cookie (1.0.8)
|
||||
domain_name (~> 0.5)
|
||||
httparty (0.22.0)
|
||||
csv
|
||||
mini_mime (>= 1.0.0)
|
||||
@@ -328,7 +341,7 @@ GEM
|
||||
rainbow (>= 2.2.2, < 4.0)
|
||||
ruby-progressbar (~> 1.8, >= 1.8.1)
|
||||
terminal-table (>= 1.5.1)
|
||||
icalendar (2.11.0)
|
||||
icalendar (2.11.2)
|
||||
base64
|
||||
ice_cube (~> 0.16)
|
||||
logger
|
||||
@@ -338,7 +351,7 @@ GEM
|
||||
image_processing (1.12.2)
|
||||
mini_magick (>= 4.9.5, < 5)
|
||||
ruby-vips (>= 2.0.17, < 3)
|
||||
io-console (0.8.0)
|
||||
io-console (0.8.1)
|
||||
irb (1.15.2)
|
||||
pp (>= 0.6.0)
|
||||
rdoc (>= 4.0.0)
|
||||
@@ -347,7 +360,7 @@ GEM
|
||||
rails-dom-testing (>= 1, < 3)
|
||||
railties (>= 4.2.0)
|
||||
thor (>= 0.14, < 2.0)
|
||||
json (2.12.2)
|
||||
json (2.13.2)
|
||||
json-schema (5.1.0)
|
||||
addressable (~> 2.8)
|
||||
jsonapi-resources (0.10.7)
|
||||
@@ -392,6 +405,10 @@ GEM
|
||||
matrix (0.4.2)
|
||||
memcachier (0.0.2)
|
||||
method_source (1.1.0)
|
||||
mime-types (3.7.0)
|
||||
logger
|
||||
mime-types-data (~> 3.2025, >= 3.2025.0507)
|
||||
mime-types-data (3.2025.0805)
|
||||
mimemagic (0.4.3)
|
||||
nokogiri (~> 1)
|
||||
rake
|
||||
@@ -406,20 +423,21 @@ GEM
|
||||
bigdecimal (~> 3.1)
|
||||
net-http (0.6.0)
|
||||
uri
|
||||
net-imap (0.4.20)
|
||||
net-imap (0.5.9)
|
||||
date
|
||||
net-protocol
|
||||
net-pop (0.1.2)
|
||||
net-protocol
|
||||
net-protocol (0.2.2)
|
||||
timeout
|
||||
net-smtp (0.5.0)
|
||||
net-smtp (0.5.1)
|
||||
net-protocol
|
||||
netrc (0.11.0)
|
||||
nio4r (2.7.4)
|
||||
nokogiri (1.18.8)
|
||||
nokogiri (1.18.9)
|
||||
mini_portile2 (~> 2.8.2)
|
||||
racc (~> 1.4)
|
||||
nokogiri (1.18.8-x86_64-linux-gnu)
|
||||
nokogiri (1.18.9-x86_64-linux-gnu)
|
||||
racc (~> 1.4)
|
||||
oauth (0.5.6)
|
||||
oj (3.16.10)
|
||||
@@ -437,15 +455,17 @@ GEM
|
||||
omniauth-twitter (1.4.0)
|
||||
omniauth-oauth (~> 1.1)
|
||||
rack
|
||||
open-uri (0.1.0)
|
||||
orm_adapter (0.5.0)
|
||||
ostruct (0.6.1)
|
||||
ostruct (0.6.2)
|
||||
parallel (1.27.0)
|
||||
parser (3.3.8.0)
|
||||
parser (3.3.9.0)
|
||||
ast (~> 2.4.1)
|
||||
racc
|
||||
percy-capybara (5.0.0)
|
||||
capybara (>= 3)
|
||||
pg (1.5.9)
|
||||
pg (1.6.1)
|
||||
pg (1.6.1-x86_64-linux)
|
||||
platform-api (3.8.0)
|
||||
heroics (~> 0.1.1)
|
||||
moneta (~> 1.0.0)
|
||||
@@ -462,7 +482,7 @@ GEM
|
||||
date
|
||||
stringio
|
||||
public_suffix (6.0.1)
|
||||
puma (6.6.0)
|
||||
puma (6.6.1)
|
||||
nio4r (~> 2.0)
|
||||
query_diet (0.7.2)
|
||||
racc (1.8.1)
|
||||
@@ -479,20 +499,20 @@ GEM
|
||||
rackup (1.0.1)
|
||||
rack (< 3)
|
||||
webrick
|
||||
rails (7.2.2.1)
|
||||
actioncable (= 7.2.2.1)
|
||||
actionmailbox (= 7.2.2.1)
|
||||
actionmailer (= 7.2.2.1)
|
||||
actionpack (= 7.2.2.1)
|
||||
actiontext (= 7.2.2.1)
|
||||
actionview (= 7.2.2.1)
|
||||
activejob (= 7.2.2.1)
|
||||
activemodel (= 7.2.2.1)
|
||||
activerecord (= 7.2.2.1)
|
||||
activestorage (= 7.2.2.1)
|
||||
activesupport (= 7.2.2.1)
|
||||
rails (7.2.2.2)
|
||||
actioncable (= 7.2.2.2)
|
||||
actionmailbox (= 7.2.2.2)
|
||||
actionmailer (= 7.2.2.2)
|
||||
actionpack (= 7.2.2.2)
|
||||
actiontext (= 7.2.2.2)
|
||||
actionview (= 7.2.2.2)
|
||||
activejob (= 7.2.2.2)
|
||||
activemodel (= 7.2.2.2)
|
||||
activerecord (= 7.2.2.2)
|
||||
activestorage (= 7.2.2.2)
|
||||
activesupport (= 7.2.2.2)
|
||||
bundler (>= 1.15.0)
|
||||
railties (= 7.2.2.1)
|
||||
railties (= 7.2.2.2)
|
||||
rails-controller-testing (1.0.5)
|
||||
actionpack (>= 5.0.1.rc1)
|
||||
actionview (>= 5.0.1.rc1)
|
||||
@@ -512,9 +532,9 @@ GEM
|
||||
rails_stdout_logging
|
||||
rails_serve_static_assets (0.0.5)
|
||||
rails_stdout_logging (0.0.5)
|
||||
railties (7.2.2.1)
|
||||
actionpack (= 7.2.2.1)
|
||||
activesupport (= 7.2.2.1)
|
||||
railties (7.2.2.2)
|
||||
actionpack (= 7.2.2.2)
|
||||
activesupport (= 7.2.2.2)
|
||||
irb (~> 1.13)
|
||||
rackup (>= 1.0.0)
|
||||
rake (>= 12.2)
|
||||
@@ -522,42 +542,47 @@ GEM
|
||||
zeitwerk (~> 2.6)
|
||||
rainbow (3.1.1)
|
||||
raindrops (0.20.1)
|
||||
rake (13.2.1)
|
||||
rake (13.3.0)
|
||||
rate_throttle_client (0.1.2)
|
||||
rb-fsevent (0.11.2)
|
||||
rb-inotify (0.10.1)
|
||||
ffi (~> 1.0)
|
||||
rdoc (6.14.0)
|
||||
rdoc (6.14.2)
|
||||
erb
|
||||
psych (>= 4.0.0)
|
||||
recaptcha (5.19.0)
|
||||
recaptcha (5.20.1)
|
||||
redis-client (0.23.2)
|
||||
connection_pool
|
||||
regexp_parser (2.10.0)
|
||||
reline (0.6.1)
|
||||
regexp_parser (2.11.2)
|
||||
reline (0.6.2)
|
||||
io-console (~> 0.5)
|
||||
responders (3.1.1)
|
||||
actionpack (>= 5.2)
|
||||
railties (>= 5.2)
|
||||
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.4.1)
|
||||
rouge (4.1.2)
|
||||
rspec (3.13.0)
|
||||
rspec-core (~> 3.13.0)
|
||||
rspec-expectations (~> 3.13.0)
|
||||
rspec-mocks (~> 3.13.0)
|
||||
rspec-activemodel-mocks (1.2.1)
|
||||
rspec-activemodel-mocks (1.3.0)
|
||||
activemodel (>= 3.0)
|
||||
activesupport (>= 3.0)
|
||||
rspec-mocks (>= 2.99, < 4.0)
|
||||
rspec-core (3.13.3)
|
||||
rspec-core (3.13.5)
|
||||
rspec-support (~> 3.13.0)
|
||||
rspec-expectations (3.13.4)
|
||||
rspec-expectations (3.13.5)
|
||||
diff-lcs (>= 1.2.0, < 2.0)
|
||||
rspec-support (~> 3.13.0)
|
||||
rspec-mocks (3.13.4)
|
||||
rspec-mocks (3.13.5)
|
||||
diff-lcs (>= 1.2.0, < 2.0)
|
||||
rspec-support (~> 3.13.0)
|
||||
rspec-rails (8.0.0)
|
||||
rspec-rails (8.0.2)
|
||||
actionpack (>= 7.2)
|
||||
activesupport (>= 7.2)
|
||||
railties (>= 7.2)
|
||||
@@ -565,7 +590,9 @@ GEM
|
||||
rspec-expectations (~> 3.13)
|
||||
rspec-mocks (~> 3.13)
|
||||
rspec-support (~> 3.13)
|
||||
rspec-support (3.13.3)
|
||||
rspec-rebound (0.2.1)
|
||||
rspec-core (~> 3.3)
|
||||
rspec-support (3.13.4)
|
||||
rspectre (0.2.0)
|
||||
parser (>= 3.3.7.1)
|
||||
prism (~> 1.3)
|
||||
@@ -581,7 +608,7 @@ GEM
|
||||
rswag-ui (2.16.0)
|
||||
actionpack (>= 5.2, < 8.1)
|
||||
railties (>= 5.2, < 8.1)
|
||||
rubocop (1.76.0)
|
||||
rubocop (1.79.2)
|
||||
json (~> 2.3)
|
||||
language_server-protocol (~> 3.17.0.2)
|
||||
lint_roller (~> 1.1.0)
|
||||
@@ -589,10 +616,10 @@ GEM
|
||||
parser (>= 3.3.0.2)
|
||||
rainbow (>= 2.2.2, < 4.0)
|
||||
regexp_parser (>= 2.9.3, < 3.0)
|
||||
rubocop-ast (>= 1.45.0, < 2.0)
|
||||
rubocop-ast (>= 1.46.0, < 2.0)
|
||||
ruby-progressbar (~> 1.7)
|
||||
unicode-display_width (>= 2.4.0, < 4.0)
|
||||
rubocop-ast (1.45.0)
|
||||
rubocop-ast (1.46.0)
|
||||
parser (>= 3.3.7.2)
|
||||
prism (~> 1.4)
|
||||
rubocop-capybara (2.22.1)
|
||||
@@ -601,7 +628,7 @@ GEM
|
||||
rubocop-factory_bot (2.27.1)
|
||||
lint_roller (~> 1.1)
|
||||
rubocop (~> 1.72, >= 1.72.1)
|
||||
rubocop-rails (2.32.0)
|
||||
rubocop-rails (2.33.3)
|
||||
activesupport (>= 4.2.0)
|
||||
lint_roller (~> 1.1)
|
||||
rack (>= 1.1)
|
||||
@@ -621,7 +648,7 @@ GEM
|
||||
ruby-units (4.1.0)
|
||||
ruby-vips (2.2.1)
|
||||
ffi (~> 1.12)
|
||||
rubyzip (2.4.1)
|
||||
rubyzip (3.0.1)
|
||||
sass (3.7.4)
|
||||
sass-listen (~> 4.0.0)
|
||||
sass-listen (4.0.0)
|
||||
@@ -635,17 +662,17 @@ GEM
|
||||
sprockets (> 3.0)
|
||||
sprockets-rails
|
||||
tilt
|
||||
scout_apm (5.6.4)
|
||||
scout_apm (5.7.0)
|
||||
parser
|
||||
searchkick (5.3.1)
|
||||
activemodel (>= 6.1)
|
||||
hashie
|
||||
securerandom (0.4.1)
|
||||
selenium-webdriver (4.32.0)
|
||||
selenium-webdriver (4.35.0)
|
||||
base64 (~> 0.2)
|
||||
logger (~> 1.4)
|
||||
rexml (~> 3.2, >= 3.2.5)
|
||||
rubyzip (>= 1.2.2, < 3.0)
|
||||
rubyzip (>= 1.2.2, < 4.0)
|
||||
websocket (~> 1.0)
|
||||
sidekiq (7.3.9)
|
||||
base64
|
||||
@@ -653,11 +680,6 @@ GEM
|
||||
logger
|
||||
rack (>= 2.2.4)
|
||||
redis-client (>= 0.22.2)
|
||||
simplecov (0.13.0)
|
||||
docile (~> 1.1.0)
|
||||
json (>= 1.8, < 3)
|
||||
simplecov-html (~> 0.10.0)
|
||||
simplecov-html (0.10.2)
|
||||
sprockets (3.7.5)
|
||||
base64
|
||||
concurrent-ruby (~> 1.0)
|
||||
@@ -669,14 +691,14 @@ GEM
|
||||
ssrf_filter (1.1.2)
|
||||
stringio (3.1.7)
|
||||
sysexits (1.2.0)
|
||||
temple (0.10.3)
|
||||
temple (0.10.4)
|
||||
terminal-table (4.0.0)
|
||||
unicode-display_width (>= 1.1.1, < 4)
|
||||
terser (1.2.5)
|
||||
execjs (>= 0.3.0, < 3)
|
||||
thor (1.3.2)
|
||||
thor (1.4.0)
|
||||
thread_safe (0.3.6)
|
||||
tilt (2.6.0)
|
||||
tilt (2.6.1)
|
||||
timecop (0.9.10)
|
||||
timeout (0.4.3)
|
||||
trollop (1.16.2)
|
||||
@@ -708,7 +730,8 @@ GEM
|
||||
rack-test (>= 0.5.3)
|
||||
webrick (1.9.1)
|
||||
websocket (1.2.11)
|
||||
websocket-driver (0.7.6)
|
||||
websocket-driver (0.8.0)
|
||||
base64
|
||||
websocket-extensions (>= 0.1.0)
|
||||
websocket-extensions (0.1.5)
|
||||
will_paginate (4.0.1)
|
||||
@@ -746,6 +769,7 @@ DEPENDENCIES
|
||||
chartkick
|
||||
coffee-rails
|
||||
comfortable_mexican_sofa!
|
||||
crowdin-cli
|
||||
csv_shaper
|
||||
dalli
|
||||
database_cleaner
|
||||
@@ -804,6 +828,7 @@ DEPENDENCIES
|
||||
responders
|
||||
rspec-activemodel-mocks
|
||||
rspec-rails
|
||||
rspec-rebound
|
||||
rspectre
|
||||
rswag-api
|
||||
rswag-specs
|
||||
@@ -833,7 +858,7 @@ DEPENDENCIES
|
||||
xmlrpc
|
||||
|
||||
RUBY VERSION
|
||||
ruby 3.3.7p123
|
||||
ruby 3.3.8p144
|
||||
|
||||
BUNDLED WITH
|
||||
2.4.22
|
||||
|
||||
Binary file not shown.
|
Before Width: | Height: | Size: 20 KiB |
@@ -33,13 +33,6 @@
|
||||
}
|
||||
}
|
||||
|
||||
.location-not-set {
|
||||
background-image: image-url("location-not-set.en.png");
|
||||
background-position: center;
|
||||
background-repeat: no-repeat;
|
||||
height: 250px;
|
||||
width: 100%;
|
||||
}
|
||||
.card {
|
||||
.badge-location {
|
||||
background-color: darken($blue, 10%);
|
||||
|
||||
@@ -30,3 +30,7 @@
|
||||
@import "predictions";
|
||||
@import "homepage";
|
||||
@import "maps";
|
||||
|
||||
@view-transition {
|
||||
navigation: auto;
|
||||
}
|
||||
@@ -78,6 +78,7 @@ class ApplicationController < ActionController::Base
|
||||
:tos_agreement,
|
||||
# profile stuff
|
||||
:bio, :location, :latitude, :longitude,
|
||||
:website_url, :instagram_handle, :facebook_handle, :bluesky_handle, :other_url,
|
||||
# email settings
|
||||
:show_email, :newsletter, :send_notification_email, :send_planting_reminder,
|
||||
# update password
|
||||
|
||||
@@ -19,6 +19,10 @@ class SeedsController < DataController
|
||||
where['parent_planting'] = @planting.id
|
||||
end
|
||||
|
||||
if params[:tradeable_to].present?
|
||||
where['tradeable_to'] = params[:tradeable_to]
|
||||
end
|
||||
|
||||
@show_all = (params[:all] == '1')
|
||||
where['finished'] = false unless @show_all
|
||||
|
||||
|
||||
@@ -91,6 +91,9 @@ class Member < ApplicationRecord
|
||||
uniqueness: {
|
||||
case_sensitive: false
|
||||
}
|
||||
validates :website_url, format: { with: /\Ahttps?:\/\//, message: "must start with http:// or https://" }, allow_blank: true
|
||||
validates :other_url, format: { with: /\Ahttps?:\/\//, message: "must start with http:// or https://" }, allow_blank: true
|
||||
validates :instagram_handle, :facebook_handle, :bluesky_handle, format: { without: %r{\Ahttps?:\/\/|\/}, message: "should be a handle, not a URL" }, allow_blank: true
|
||||
|
||||
#
|
||||
# Triggers
|
||||
|
||||
@@ -13,7 +13,32 @@
|
||||
.form-group
|
||||
= f.label :bio, class: 'control-label col-md-2'
|
||||
.col-md-8
|
||||
= f.text_area :bio, rows: 6, class: 'form-control'
|
||||
= f.text_area :bio, rows: 6, class: 'form-control', placeholder: "I'm am XYZ gardener interested in A, B, C"
|
||||
|
||||
.form-group
|
||||
= f.label :website_url, 'Website', class: 'control-label col-md-2'
|
||||
.col-md-8
|
||||
= f.url_field :website_url, class: 'form-control', placeholder: "https://you.example.com/"
|
||||
|
||||
.form-group
|
||||
= f.label :instagram_handle, 'Instagram', class: 'control-label col-md-2'
|
||||
.col-md-8
|
||||
= f.text_field :instagram_handle, class: 'form-control', placeholder: 'your_handle'
|
||||
|
||||
.form-group
|
||||
= f.label :facebook_handle, 'Facebook', class: 'control-label col-md-2'
|
||||
.col-md-8
|
||||
= f.text_field :facebook_handle, class: 'form-control', placeholder: 'your_handle'
|
||||
|
||||
.form-group
|
||||
= f.label :bluesky_handle, 'Bluesky', class: 'control-label col-md-2'
|
||||
.col-md-8
|
||||
= f.text_field :bluesky_handle, class: 'form-control', placeholder: 'your_handle'
|
||||
|
||||
.form-group
|
||||
= f.label :other_url, 'Other URL', class: 'control-label col-md-2'
|
||||
.col-md-8
|
||||
= f.url_field :other_url, class: 'form-control', placeholder: "https://you.example.com/"
|
||||
|
||||
.form-group
|
||||
%label.control-label.col-md-2
|
||||
|
||||
@@ -51,7 +51,8 @@
|
||||
%section.seeds
|
||||
= cute_icon
|
||||
= render 'seeds'
|
||||
%p.text-right= link_to "#{t('home.seeds.view_all')} »", seeds_path, class: 'btn btn-block'
|
||||
%p.text-right
|
||||
= link_to "#{t('home.seeds.view_all')} »", seeds_path(tradeable_to: ['locally', 'nationally', 'internationally']), class: 'btn btn-block'
|
||||
.col-12.col-lg-6
|
||||
%section.discussion.text-center
|
||||
= cute_icon
|
||||
|
||||
@@ -1,13 +1 @@
|
||||
%h2 All about #{member.login_name}
|
||||
%p
|
||||
%small
|
||||
%a{href: "#content"}
|
||||
Skip to main content
|
||||
- if member.bio.blank?
|
||||
- if can? :edit, member
|
||||
= link_to "Add a bio to complete your profile.", edit_member_registration_path
|
||||
- else
|
||||
#{member.login_name} hasn't written a bio yet.
|
||||
- else
|
||||
:markdown
|
||||
#{ strip_tags markdownify(member.bio) }
|
||||
|
||||
@@ -1,17 +1,42 @@
|
||||
- if twitter_auth || flickr_auth || member.show_email
|
||||
- if member.website_url.present? || member.instagram_handle.present? || member.facebook_handle.present? || member.bluesky_handle.present? || member.other_url.present? || twitter_auth || flickr_auth || member.show_email
|
||||
%h4 Contact
|
||||
|
||||
- if member.website_url.present?
|
||||
%p
|
||||
= icon 'fas', 'globe', class: 'fa-fw'
|
||||
= link_to "Website", member.website_url, target: '_blank', rel: 'noopener noreferrer'
|
||||
|
||||
- if member.instagram_handle.present?
|
||||
%p
|
||||
= icon 'fab', 'instagram', class: 'fa-fw'
|
||||
= link_to member.instagram_handle, "https://instagram.com/#{member.instagram_handle}", target: '_blank', rel: 'noopener noreferrer'
|
||||
|
||||
- if member.facebook_handle.present?
|
||||
%p
|
||||
= icon 'fab', 'facebook', class: 'fa-fw'
|
||||
= link_to member.facebook_handle, "https://facebook.com/#{member.facebook_handle}", target: '_blank', rel: 'noopener noreferrer'
|
||||
|
||||
- if member.bluesky_handle.present?
|
||||
%p
|
||||
= icon 'fas', 'comment-dots', class: 'fa-fw'
|
||||
= link_to member.bluesky_handle, "https://bsky.app/profile/#{member.bluesky_handle}", target: '_blank', rel: 'noopener noreferrer'
|
||||
|
||||
- if member.other_url.present?
|
||||
%p
|
||||
= icon 'fas', 'link', class: 'fa-fw'
|
||||
= link_to "More...", member.other_url, target: '_blank', rel: 'noopener noreferrer'
|
||||
|
||||
- if twitter_auth
|
||||
%p
|
||||
= image_tag "twitter_32.png", size: "32x32", alt: 'Twitter logo'
|
||||
= link_to twitter_auth.name, "https://twitter.com/#{twitter_auth.name}"
|
||||
= link_to twitter_auth.name, "https://twitter.com/#{twitter_auth.name}", target: '_blank', rel: 'noopener noreferrer'
|
||||
|
||||
- if flickr_auth
|
||||
%p
|
||||
= image_tag "flickr_32.png", size: "32x32", alt: 'Flickr logo'
|
||||
= link_to flickr_auth.name, "https://flickr.com/photos/#{flickr_auth.uid}"
|
||||
= link_to flickr_auth.name, "https://flickr.com/photos/#{flickr_auth.uid}", target: '_blank', rel: 'noopener noreferrer'
|
||||
|
||||
- if member.show_email
|
||||
%p
|
||||
Email:
|
||||
= icon 'fas', 'envelope', class: 'fa-fw'
|
||||
= mail_to member.email
|
||||
|
||||
@@ -5,5 +5,5 @@
|
||||
= link_to member.location, place_path(member.location, anchor: "members")
|
||||
- else
|
||||
.location-not-set
|
||||
.sr-only Location not known
|
||||
.sr-only We can't show you what's nearby
|
||||
%h1 Location not known or geocodable
|
||||
%p We can't show you what's nearby
|
||||
|
||||
@@ -21,6 +21,21 @@
|
||||
.row
|
||||
.col= render "bio", member: @member
|
||||
.col= render "avatar", member: @member
|
||||
.row
|
||||
.col
|
||||
%p
|
||||
%small
|
||||
%a{href: "#content"}
|
||||
Skip to main content
|
||||
- if @member.bio.blank?
|
||||
- if can? :edit, @member
|
||||
= link_to "Add a bio to complete your profile.", edit_member_registration_path
|
||||
- else
|
||||
#{@member.login_name} hasn't written a bio yet.
|
||||
- else
|
||||
:markdown
|
||||
#{ strip_tags markdownify(@member.bio) }
|
||||
|
||||
- if @member.roles.any?
|
||||
%p
|
||||
- @member.roles.each do |role|
|
||||
@@ -30,12 +45,16 @@
|
||||
= icon 'fas', 'map-marker'
|
||||
= truncate(@member.location, length: 15, separator: ' ', omission: '... ')
|
||||
%p
|
||||
%strong Member since
|
||||
= @member.created_at.to_fs(:date)
|
||||
%small
|
||||
%strong Member since
|
||||
%br
|
||||
= @member.created_at.to_fs(:date)
|
||||
- if @member.last_sign_in_at
|
||||
%p
|
||||
%strong Last Login
|
||||
= @member.last_sign_in_at&.to_fs(:default)
|
||||
%small
|
||||
%strong Last Login
|
||||
%br
|
||||
= @member.last_sign_in_at&.to_fs(:default)
|
||||
|
||||
- if can? :update, @member
|
||||
= link_to edit_member_registration_path, class: 'btn btn-block' do
|
||||
|
||||
@@ -17,6 +17,14 @@
|
||||
= check_box_tag 'active', 'all', @show_all
|
||||
include finished
|
||||
%hr/
|
||||
%section.filters
|
||||
%h2 Tradeable
|
||||
%ul.nav.flex-column
|
||||
%li.nav-item= link_to "All tradable seeds", seeds_path(tradeable_to: ['locally', 'nationally', 'internationally'])
|
||||
- Seed::TRADABLE_TO_VALUES.each do |value|
|
||||
- unless value == 'nowhere'
|
||||
%li.nav-item= link_to value.capitalize, seeds_path(tradeable_to: value)
|
||||
%hr/
|
||||
- if @owner
|
||||
= render @owner
|
||||
- if @crop
|
||||
|
||||
@@ -5,7 +5,7 @@ Mailboxer.setup do |config|
|
||||
config.uses_emails = true
|
||||
|
||||
# Configures the default from for emails sent for Messages and Notifications
|
||||
config.default_from = "no-reply@growstuff.org"
|
||||
config.default_from = "Growstuff <#{ENV.fetch('GROWSTUFF_EMAIL', "no-reply@growstuff.org")}>"
|
||||
|
||||
# Configures the methods needed by mailboxer
|
||||
# config.email_method = :email
|
||||
|
||||
7
config/locales/mailboxer.en.yml
Normal file
7
config/locales/mailboxer.en.yml
Normal file
@@ -0,0 +1,7 @@
|
||||
en:
|
||||
mailboxer:
|
||||
message_mailer:
|
||||
subject_new: "New Notification: %{subject}"
|
||||
subject_reply: "New Reply: %{subject}"
|
||||
notification_mailer:
|
||||
subject: "New notification: %{subject}"
|
||||
22
crowdin.yml
Normal file
22
crowdin.yml
Normal file
@@ -0,0 +1,22 @@
|
||||
# Hi there!
|
||||
#
|
||||
# This is a configuration file for the Crowdin CLI.
|
||||
# You'll need to replace the placeholder project_id with your actual
|
||||
# project ID from CrowdIn.
|
||||
#
|
||||
# For more information, see the Crowdin CLI documentation:
|
||||
# https://support.crowdin.com/enterprise/cli-v3/
|
||||
#
|
||||
project_id: "your-project-id"
|
||||
api_token_env: "CROWDIN_API_TOKEN"
|
||||
base_path: "."
|
||||
|
||||
files:
|
||||
- source: '/config/locales/en.yml'
|
||||
translation: '/config/locales/%two_letters_code%.yml'
|
||||
# The 'ignore' property is used to exclude files from processing.
|
||||
# We are ignoring the existing Japanese translation file.
|
||||
ignore:
|
||||
- '/config/locales/ja.yml'
|
||||
- source: '/config/locales/*.en.yml'
|
||||
translation: '/config/locales/%file_name%.%two_letters_code%.yml'
|
||||
9
db/migrate/20240716120000_add_social_media_to_members.rb
Normal file
9
db/migrate/20240716120000_add_social_media_to_members.rb
Normal file
@@ -0,0 +1,9 @@
|
||||
class AddSocialMediaToMembers < ActiveRecord::Migration[6.0]
|
||||
def change
|
||||
add_column :members, :website_url, :string
|
||||
add_column :members, :instagram_handle, :string
|
||||
add_column :members, :facebook_handle, :string
|
||||
add_column :members, :bluesky_handle, :string
|
||||
add_column :members, :other_handle, :string
|
||||
end
|
||||
end
|
||||
@@ -0,0 +1,5 @@
|
||||
class RenameOtherHandleToOtherUrlInMembers < ActiveRecord::Migration[6.0]
|
||||
def change
|
||||
rename_column :members, :other_handle, :other_url
|
||||
end
|
||||
end
|
||||
@@ -446,6 +446,11 @@ ActiveRecord::Schema[7.2].define(version: 2024_09_29_041435) do
|
||||
t.integer "photos_count"
|
||||
t.integer "forums_count"
|
||||
t.integer "activities_count"
|
||||
t.string "website_url"
|
||||
t.string "instagram_handle"
|
||||
t.string "facebook_handle"
|
||||
t.string "bluesky_handle"
|
||||
t.string "other_url"
|
||||
t.index ["confirmation_token"], name: "index_members_on_confirmation_token", unique: true
|
||||
t.index ["discarded_at"], name: "index_members_on_discarded_at"
|
||||
t.index ["email"], name: "index_members_on_email", unique: true
|
||||
|
||||
@@ -8,4 +8,20 @@ namespace :openfarm do
|
||||
Rails.logger = Logger.new(STDOUT)
|
||||
OpenfarmService.new.import!
|
||||
end
|
||||
|
||||
desc "Delete all pictures with source OpenFarm or from legacy S3 URL"
|
||||
task delete_pictures: :environment do
|
||||
puts "Deleting pictures with source OpenFarm or from legacy S3 URL..."
|
||||
s3_legacy_url = 'https://s3.amazonaws.com/openfarm-project/%'
|
||||
photos_to_delete = Photo.where(source: 'openfarm')
|
||||
.or(Photo.where('fullsize_url LIKE ?', s3_legacy_url))
|
||||
count = photos_to_delete.count
|
||||
photos_to_delete.each do |photo|
|
||||
photo.associations.each do |photo_association|
|
||||
photo_association.delete
|
||||
end
|
||||
photo.delete
|
||||
end
|
||||
puts "Deleted #{count} pictures."
|
||||
end
|
||||
end
|
||||
|
||||
@@ -2,11 +2,6 @@
|
||||
|
||||
# This file is copied to spec/ when you run 'rails generate rspec:install'
|
||||
ENV["RAILS_ENV"] ||= 'test'
|
||||
require 'simplecov'
|
||||
|
||||
# output coverage locally AND send it to coveralls
|
||||
SimpleCov.formatter = SimpleCov::Formatter::MultiFormatter.new([SimpleCov::Formatter::HTMLFormatter])
|
||||
|
||||
require 'spec_helper'
|
||||
require File.expand_path('../config/environment', __dir__)
|
||||
require 'rspec/rails'
|
||||
@@ -20,13 +15,13 @@ require 'capybara-screenshot/rspec'
|
||||
require 'axe-capybara'
|
||||
require 'axe-rspec'
|
||||
|
||||
# TODO: We may want to trial options.add_argument('--disable-dev-shm-usage') ### optional
|
||||
|
||||
# Required for running in the dev container
|
||||
Capybara.register_driver :selenium_chrome_customised_headless do |app|
|
||||
options = Selenium::WebDriver::Options.chrome
|
||||
options.add_argument("--headless")
|
||||
options.add_argument("--no-sandbox")
|
||||
options.add_argument("--window-size=1920,1080")
|
||||
options.add_argument("--disable-dev-shm-usage")
|
||||
|
||||
# driver = Selenium::WebDriver.for :chrome, options: options
|
||||
|
||||
@@ -125,8 +120,8 @@ RSpec.configure do |config|
|
||||
# Prevent Poltergeist from fetching external URLs during feature tests
|
||||
config.before(:each, :js) do
|
||||
# TODO: Why are we setting this page size then straight afterwards, maximising?
|
||||
width = 1280
|
||||
height = 1280
|
||||
width = 1920
|
||||
height = 1080
|
||||
Capybara.current_session.driver.browser.manage.window.resize_to(width, height)
|
||||
|
||||
if page.driver.browser.respond_to?(:url_blacklist)
|
||||
@@ -137,6 +132,9 @@ RSpec.configure do |config|
|
||||
]
|
||||
end
|
||||
|
||||
page.driver.browser.manage.window.maximize if page.driver.browser.respond_to?(:manage)
|
||||
# Historically, we wanted to .maximize; but this actually undoes the resize_to step above
|
||||
# with chrome headless
|
||||
# page.driver.browser.manage.window.maximize if page.driver.browser.respond_to?(:manage)
|
||||
# puts "Maximized window size: #{page.driver.browser.manage.window.size}"
|
||||
end
|
||||
end
|
||||
|
||||
@@ -16,8 +16,8 @@
|
||||
# users commonly want.
|
||||
#
|
||||
# See http://rubydoc.info/gems/rspec-core/RSpec/Core/Configuration
|
||||
require 'simplecov'
|
||||
require 'percy/capybara'
|
||||
require 'rspec/rebound'
|
||||
require 'vcr'
|
||||
|
||||
VCR.configure do |c|
|
||||
@@ -27,8 +27,6 @@ VCR.configure do |c|
|
||||
c.configure_rspec_metadata!
|
||||
end
|
||||
|
||||
SimpleCov.start
|
||||
|
||||
RSpec.configure do |config|
|
||||
# rspec-expectations config goes here. You can use an alternate
|
||||
# assertion/expectation library such as wrong or the stdlib/minitest
|
||||
@@ -126,4 +124,20 @@ RSpec.configure do |config|
|
||||
|
||||
# Remember which tests failed, so you can run rspec with the `--only-failures` flag.
|
||||
config.example_status_persistence_file_path = "tmp/examples.txt"
|
||||
|
||||
# show retry status in spec process
|
||||
config.verbose_retry = true
|
||||
# show exception that triggers a retry if verbose_retry is set to true
|
||||
config.display_try_failure_messages = true
|
||||
|
||||
# run retry only on features
|
||||
config.around :each, :js do |ex|
|
||||
ex.run_with_retry retry: 3
|
||||
end
|
||||
|
||||
# callback to be run between retries
|
||||
config.retry_callback = proc do |ex|
|
||||
# run some additional clean up task - can be filtered by example metadata
|
||||
Capybara.reset! if ex.metadata[:js]
|
||||
end
|
||||
end
|
||||
|
||||
33
spec/tasks/openfarm_rake_spec.rb
Normal file
33
spec/tasks/openfarm_rake_spec.rb
Normal file
@@ -0,0 +1,33 @@
|
||||
# frozen_string_literal: true
|
||||
|
||||
require 'rails_helper'
|
||||
require 'rake'
|
||||
|
||||
describe 'openfarm:delete_pictures' do
|
||||
before(:all) do
|
||||
Rails.application.load_tasks
|
||||
end
|
||||
|
||||
# We need to do this because Rake tasks normally output to STDOUT, but we
|
||||
# don't want to clutter up the test output.
|
||||
before(:each) do
|
||||
$stdout = StringIO.new
|
||||
end
|
||||
|
||||
after(:each) do
|
||||
$stdout = STDOUT
|
||||
end
|
||||
|
||||
it 'deletes pictures with source OpenFarm' do
|
||||
create(:photo, source: 'OpenFarm')
|
||||
create(:photo, source: 'flickr')
|
||||
|
||||
expect(Photo.where(source: 'OpenFarm').count).to eq(1)
|
||||
expect(Photo.where(source: 'flickr').count).to eq(1)
|
||||
|
||||
Rake::Task['openfarm:delete_pictures'].invoke
|
||||
|
||||
expect(Photo.where(source: 'OpenFarm').count).to eq(0)
|
||||
expect(Photo.where(source: 'flickr').count).to eq(1)
|
||||
end
|
||||
end
|
||||
Reference in New Issue
Block a user