From 625c4374a3fcde3d834fe9bf2080b0876dce1479 Mon Sep 17 00:00:00 2001 From: Nathan Sebhastian Date: Tue, 2 Oct 2018 02:15:46 +0700 Subject: [PATCH] Create Windows installation doc (#671) --- docs/.static/wsl-feature.png | Bin 0 -> 18542 bytes docs/installation/windows.md | 147 ++++++++++++++++++++++++++++++++++- 2 files changed, 145 insertions(+), 2 deletions(-) create mode 100644 docs/.static/wsl-feature.png diff --git a/docs/.static/wsl-feature.png b/docs/.static/wsl-feature.png new file mode 100644 index 0000000000000000000000000000000000000000..0c4c2bea7e49a11a170d018d2d2fb1f0cf6b5d27 GIT binary patch literal 18542 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 ~/.bashrc +echo 'eval "$(rbenv init -)"' >> ~/.bashrc +exec $SHELL + +git clone https://github.com/rbenv/ruby-build.git ~/.rbenv/plugins/ruby-build +echo 'export PATH="$HOME/.rbenv/plugins/ruby-build/bin:$PATH"' >> ~/.bashrc +exec $SHELL + +rbenv install 2.5.1 +rbenv global 2.5.1 +ruby -v +``` + +### Installing Rails + +Since Rails ships with so many dependencies these days, we're going to need to install a Javascript runtime like NodeJS. This lets you use Coffeescript and the Asset Pipeline in Rails which combines and minifies your javascript to provide a faster production environment. + +To install NodeJS, we're going to add it using the official repository: + +``` +curl -sL https://deb.nodesource.com/setup_8.x | sudo -E bash - +sudo apt-get install -y nodejs +node -v +npm -v +``` + +If `npm -v` give Syntax error: word unexpected (expecting "in"), restart the terminal and try again. + +And now, for rails itself: + +``` +gem install rails -v 5.1.6 +``` + +Then run `rbenv rehash` to make Rails executable available. Check it out by using `rails -v` command + +``` +rbenv rehash +rails -v +# Rails 5.1.6 +``` + +### Yarn + +The fastest way to install Yarn for WSL would be from Debian package repository. Configure the repository with the following commands: + +``` +curl -sS https://dl.yarnpkg.com/debian/pubkey.gpg | sudo apt-key add - +echo "deb https://dl.yarnpkg.com/debian/ stable main" | sudo tee /etc/apt/sources.list.d/yarn.list +``` + +Then you can simply: + +``` +sudo apt-get update && sudo apt-get install yarn +``` + +Make sure that Yarn is installed with `yarn -v` + +### PostgreSQL + +If you don't have PostgreSQL installed on your Windows system, You can do so here. WSL is able to connect to Windows Postgresql. + +Download [PostgreSQL for Windows](https://www.openscg.com/bigsql/postgresql/installers.jsp/) and install it. + +Pay attention to the username and password you setup during installation of Postgres as you will use this to configure your Rails applications to login to Postgres later. + +## Installing Dev.to + +1. Fork dev.to repository, ie. https://github.com/thepracticaldev/dev.to/fork +2. Clone your forked repository, ie. `git clone https://github.com//dev.to.git` +3. Install bundler with `gem install bundler` +4. Install foreman gem with `gem install foreman` +5. Run `rbenv rehash` when foreman installation is done. +6. Install our ruby dependencies with `bundle install` + While installing, you might ran into an error due to pg gem require PostgreSQL libraries. If so, please run `sudo apt-get install libpq-dev` before retrying. +7. Install our frontend dependencies with `bin/yarn` +8. Set up your environment variables/secrets + +- Take a look at `Envfile`. This file lists all the `ENV` variables we use and provides a fake default for any missing keys. You'll need to get your own free [Algolia credentials](http://docs.dev.to/get-api-keys-dev-env/#algolia) to get your development environment running. +- This [guide](http://docs.dev.to/get-api-keys-dev-env/) will show you how to get free API keys for additional servies that may be required to run certain parts of the app. +- For any key that you wish to enter/replace: + +10. Create `config/application.yml` by copying from the provided template (ie. with bash: `cp config/sample_application.yml config/application.yml`). This is a personal file that is ignored in git. +11. Obtain the development variable and apply the key you wish to enter/replace. ie: + + + ``` + GITHUB_KEY: "SOME_REAL_SECURE_KEY_HERE" + GITHUB_SECRET: "ANOTHER_REAL_SECURE_KEY_HERE" + ``` + +- If you are missing `ENV` variables on bootup, `envied` gem will alert you with messages similar to `'error_on_missing_variables!': The following environment variables should be set: A_MISSING_KEY.`. +- You do not need "real" keys for basic development. Some features require certain keys, so you may be able to add them as you go. + +12. Now Configure database.yaml to connect to PostgreSQL run in Windows instead of Ubuntu. Make sure it looks like the following: + + ``` + development: + <<: *default + database: PracticalDeveloper_development + host: localhost + username: # your Postgres username + password: # your Postgres password + ``` + + The database username and password also have to be manually added to test database in database.yml + Another possible way to configure database connection is to setup DATABASE_URL in application.yml as documented [here](https://docs.dev.to/additional-postgres-setup/#configuration) + +13. Run `bin/setup` + +#### Other Possible Error Messages + +1. There is a possibility that you might encounter a _statement timeout_ when seeding the database for the first time. Please comment out the variable `statement_timeout` from database.yml if it happens. + +> If you encountered any errors that you subsequently resolved, **please consider updating this section** with your errors and their solutions.