@spree/docs 0.1.118 → 0.1.120
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
|
@@ -141,6 +141,15 @@ Open a Rails console.
|
|
|
141
141
|
spree console
|
|
142
142
|
```
|
|
143
143
|
|
|
144
|
+
### `spree shell`
|
|
145
|
+
|
|
146
|
+
Open an interactive bash shell inside the web container — the system-shell sibling of `spree console` (Rails) and `spree db:console` (psql). If the web container is down, it starts a one-off container against the same volumes instead. For one-off non-interactive commands, use `spree exec`.
|
|
147
|
+
|
|
148
|
+
```bash
|
|
149
|
+
spree shell
|
|
150
|
+
spree bash # alias
|
|
151
|
+
```
|
|
152
|
+
|
|
144
153
|
### `spree open`
|
|
145
154
|
|
|
146
155
|
Open the admin dashboard in the browser.
|
|
@@ -264,6 +273,19 @@ spree routes -c Spree::Api::V3::Store::ProductsController # Filter by controll
|
|
|
264
273
|
spree routes --expanded
|
|
265
274
|
```
|
|
266
275
|
|
|
276
|
+
### `spree rspec`
|
|
277
|
+
|
|
278
|
+
Run the RSpec test suite inside the web container with `RAILS_ENV=test`, so tests hit the `spree_test` database — never your development data. Everything after `rspec` passes through, so file paths, line numbers, and flags work as usual.
|
|
279
|
+
|
|
280
|
+
```bash
|
|
281
|
+
spree rspec # full suite
|
|
282
|
+
spree rspec spec/models/spree/brand_spec.rb # one file
|
|
283
|
+
spree rspec spec/models/spree/brand_spec.rb:15 # one example
|
|
284
|
+
spree rspec --format documentation
|
|
285
|
+
```
|
|
286
|
+
|
|
287
|
+
Before the first run, create the test database with `spree rails db:test:prepare`. See the [Testing tutorial](../tutorial/testing.md) for writing specs.
|
|
288
|
+
|
|
267
289
|
## Running things inside the container
|
|
268
290
|
|
|
269
291
|
These are passthrough commands — anything after the subcommand reaches the inner Rails/Bundle/Rake invocation as-is. Useful for ad-hoc commands that don't have a dedicated wrapper.
|
|
@@ -587,24 +587,33 @@ expect(page).to have_content('Success!')
|
|
|
587
587
|
|
|
588
588
|
## Running Tests
|
|
589
589
|
|
|
590
|
-
|
|
590
|
+
### Prepare the test database
|
|
591
591
|
|
|
592
|
-
|
|
593
|
-
|
|
592
|
+
Tests run against a dedicated `spree_test` database, so your development data is never touched. Create it and load the schema once:
|
|
593
|
+
|
|
594
|
+
|
|
595
|
+
```bash Spree CLI (Docker)
|
|
596
|
+
spree rails db:test:prepare
|
|
597
|
+
```
|
|
598
|
+
|
|
599
|
+
```bash Without Spree CLI
|
|
600
|
+
bin/rails db:test:prepare
|
|
594
601
|
```
|
|
595
602
|
|
|
596
|
-
|
|
603
|
+
|
|
604
|
+
You rarely need to run this again — `rails_helper.rb` re-syncs the test schema automatically when you add migrations. It's the command to reach for when the test database gets into a broken or out-of-sync state.
|
|
605
|
+
|
|
606
|
+
### Run the suite
|
|
607
|
+
|
|
608
|
+
`spree rspec` runs `bundle exec rspec` inside the web container with `RAILS_ENV=test`. Everything after `rspec` is passed through, so file paths, line numbers, and flags work as usual:
|
|
597
609
|
|
|
598
610
|
|
|
599
611
|
```bash Spree CLI (Docker)
|
|
600
|
-
#
|
|
601
|
-
|
|
602
|
-
|
|
603
|
-
spree
|
|
604
|
-
spree
|
|
605
|
-
spree-rspec spec/models/spree/brand_spec.rb:15 # specific test
|
|
606
|
-
spree-rspec --format documentation # documentation format
|
|
607
|
-
spree-rspec spec/features/ # only feature tests
|
|
612
|
+
spree rspec # all tests
|
|
613
|
+
spree rspec spec/models/spree/brand_spec.rb # specific file
|
|
614
|
+
spree rspec spec/models/spree/brand_spec.rb:15 # specific test
|
|
615
|
+
spree rspec --format documentation # documentation format
|
|
616
|
+
spree rspec spec/features/ # only feature tests
|
|
608
617
|
```
|
|
609
618
|
|
|
610
619
|
```bash Without Spree CLI
|
|
@@ -616,6 +625,29 @@ bundle exec rspec spec/features/ # only feature tests
|
|
|
616
625
|
```
|
|
617
626
|
|
|
618
627
|
|
|
628
|
+
<details>
|
|
629
|
+
<summary>Troubleshooting: DatabaseCleaner refuses a remote database URL, or tests hit the development database</summary>
|
|
630
|
+
|
|
631
|
+
Projects scaffolded before July 2026 set `DATABASE_URL` in `docker-compose.dev.yml`. A URL overrides `config/database.yml` for **every** Rails environment, so in-container tests pointed at the development database and tripped DatabaseCleaner's remote-URL safeguard. Two small changes bring an older project up to date:
|
|
632
|
+
|
|
633
|
+
1. In `docker-compose.dev.yml`, replace the `DATABASE_URL` entry under `environment:` with host/username parts, so each Rails environment resolves its own database from `database.yml`:
|
|
634
|
+
|
|
635
|
+
```yaml
|
|
636
|
+
DATABASE_HOST: postgres
|
|
637
|
+
DATABASE_USERNAME: postgres
|
|
638
|
+
```
|
|
639
|
+
|
|
640
|
+
2. In `spec/rails_helper.rb`, force the test environment — the dev container bakes in `RAILS_ENV=development`:
|
|
641
|
+
|
|
642
|
+
```ruby
|
|
643
|
+
ENV['RAILS_ENV'] = 'test'
|
|
644
|
+
```
|
|
645
|
+
|
|
646
|
+
Then restart the stack (`Ctrl+C` and `spree dev`) so the container picks up the new environment.
|
|
647
|
+
|
|
648
|
+
</details>
|
|
649
|
+
|
|
650
|
+
|
|
619
651
|
## Best Practices
|
|
620
652
|
|
|
621
653
|
|
|
@@ -677,6 +709,7 @@ spec/
|
|
|
677
709
|
* [Admin Tutorial](admin.md) - Building the admin interface
|
|
678
710
|
* [Extending Core Models](extending-models.md) - Connecting Brands to Products
|
|
679
711
|
* [API Tutorial](api.md) - Creating Brand API endpoints
|
|
712
|
+
* [Spree CLI](../cli/quickstart.md) - `spree rspec` and the other dev workflow commands
|
|
680
713
|
* [RSpec Documentation](https://rspec.info/documentation/) - Official RSpec docs
|
|
681
714
|
* [Factory Bot Documentation](https://github.com/thoughtbot/factory_bot/blob/main/GETTING_STARTED.md) - Factory Bot guide
|
|
682
715
|
|