Run yarn install relative to Rails.root

We may not always have binstubs relative to the directory we are running
the rake task from. The particular case for this is with a mountable
Rails engine and dummy app that is created to test it. This sets all the
tasks up to run under an `app` namespace in
railties/lib/rails/tasks/engine.rake

This change resolves a problem whereby running `app🧶install` would
have no effect as it would try to run in the plugins bin directory
rather than the test/dummy/bin. This also means that it installs from
test/dummy/package.json and into test/dummy/node_modules which is
behaviour consistent with a normal Rails app.

On a rails engine:

```
➜  tmp rails plugin new rails-plugin --mountable
➜  tmp cd rails-plugin
```

Before this change:

```
➜  rails-plugin rake app🧶install
➜  rails-plugin
```

After this change:

```
➜  rails-plugin rake app🧶install
yarn install v1.9.4
info No lockfile found.
[1/4] 🔍  Resolving packages...
[2/4] 🚚  Fetching packages...
[3/4] 🔗  Linking dependencies...
[4/4] 📃  Building fresh packages...
  Done in 0.07s.
```

When this change is ran against a normal rails install there is not a
behavioural change:

```
➜  tmp rails new full-app
➜  tmp cd full-app
➜  full-app git:(master) ✗ rake yarn:install
yarn install v1.9.4
info No lockfile found.
[1/4] 🔍  Resolving packages...
[2/4] 🚚  Fetching packages...
[3/4] 🔗  Linking dependencies...
[4/4] 📃  Building fresh packages...
  Done in 0.09s.
```
This commit is contained in:
Kevin Dew 2018-09-07 21:58:10 +01:00
parent dd29fabebf
commit f443aac340
No known key found for this signature in database
GPG Key ID: 0284252C078C3F92
1 changed files with 1 additions and 1 deletions

View File

@ -9,7 +9,7 @@ namespace :yarn do
rails_env = ENV["RAILS_ENV"]
valid_node_envs.include?(rails_env) ? rails_env : "production"
end
system({ "NODE_ENV" => node_env }, "./bin/yarn install --no-progress --frozen-lockfile")
system({ "NODE_ENV" => node_env }, "#{Rails.root}/bin/yarn install --no-progress --frozen-lockfile")
end
end