├── README.md ├── mac └── linux /README.md: -------------------------------------------------------------------------------- 1 | NOTICE: These scripts have been deprecated. Please see the following development installation guides: 2 | - [Install Discourse on macOS](https://meta.discourse.org/t/install-discourse-on-macos-for-development/15772) 3 | - [Install Discourse on Ubuntu](https://meta.discourse.org/t/install-discourse-on-ubuntu-or-debian-for-development/14727) 4 | - [Install Discourse on Windows](https://meta.discourse.org/t/install-discourse-on-windows-for-development/75149) 5 | 6 | Install Rails 7 | ====== 8 | 9 | Install Rails is a script to set up a Linux or Mac OS X system for Rails development. 10 | 11 | Requirements 12 | ------------ 13 | 14 | ### Linux 15 | 16 | Currently supports Ubuntu, Linux Mint and other Debian based distributions. 17 | 18 | ### Mac OS X 19 | 20 | Run `xcode-select --install` in your terminal and then click "Install". 21 | 22 | Install 23 | ------- 24 | 25 | ### Linux 26 | 27 | Run the script: 28 | 29 | bash <(wget -qO- https://raw.githubusercontent.com/techAPJ/install-rails/master/linux) 30 | 31 | ### Mac OS X 32 | 33 | Run the script: 34 | 35 | bash <(curl -s https://raw.githubusercontent.com/techAPJ/install-rails/master/mac) 36 | 37 | What it sets up 38 | --------------- 39 | 40 | * [Git][git_link] 41 | * [rbenv][rbenv_link] 42 | * [ruby-build][ruby_build_link] 43 | * [Ruby][ruby_link] (stable) 44 | * [Rails][rails_link] 45 | * [PostgreSQL][pg_link] 46 | * [SQLite][sqlite_link] 47 | * [Redis][redis_link] 48 | * [Bundler][bundler_link] 49 | * [MailCatcher][mailcatcher_link] (Linux script only) 50 | * [ImageMagick][imagemagick_link] 51 | 52 | It should take less than 15 minutes to install (depends on your machine). 53 | 54 | Credits 55 | ------- 56 | 57 | Inspired by [Thoughtbot Laptop](https://github.com/thoughtbot/laptop). 58 | 59 | License 60 | ------- 61 | 62 | Install Rails is released under the [MIT License](http://www.opensource.org/licenses/MIT). 63 | 64 | 65 | 66 | [git_link]: http://git-scm.com/ 67 | [rbenv_link]: https://github.com/sstephenson/rbenv 68 | [ruby_build_link]: https://github.com/sstephenson/ruby-build 69 | [ruby_link]: https://www.ruby-lang.org/ 70 | [rails_link]: http://rubyonrails.org/ 71 | [pg_link]: http://www.postgresql.org/ 72 | [sqlite_link]: https://sqlite.org/ 73 | [redis_link]: http://redis.io/ 74 | [bundler_link]: http://bundler.io/ 75 | [mailcatcher_link]: http://mailcatcher.me/ 76 | [imagemagick_link]: http://www.imagemagick.org/ 77 | -------------------------------------------------------------------------------- /mac: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | # Install Rails 3 | 4 | trap 'ret=$?; test $ret -ne 0 && printf "failed\n\n" >&2; exit $ret' EXIT 5 | set -e 6 | 7 | create_zshrc_and_set_it_as_shell_file() { 8 | if [ ! -f "$HOME/.zshrc" ]; then 9 | touch "$HOME/.zshrc" 10 | fi 11 | shell_file="$HOME/.zshrc" 12 | shell_profile="$HOME/.zprofile" 13 | } 14 | 15 | create_bashrc_and_set_it_as_shell_file() { 16 | if [ ! -f "$HOME/.bashrc" ]; then 17 | touch "$HOME/.bashrc" 18 | fi 19 | shell_file="$HOME/.bashrc" 20 | shell_profile="$HOME/.bash_profile" 21 | } 22 | 23 | case "$SHELL" in 24 | */zsh) : 25 | create_zshrc_and_set_it_as_shell_file 26 | ;; 27 | *) 28 | create_bashrc_and_set_it_as_shell_file 29 | ;; 30 | esac 31 | 32 | log_info() { 33 | printf "\n\e[0;35m $1\e[0m\n\n" 34 | } 35 | 36 | if ! command -v brew &>/dev/null; then 37 | log_info "Installing Homebrew, a good OS X package manager ..." 38 | /bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)" 39 | eval "$(/opt/homebrew/bin/brew shellenv)" 40 | else 41 | log_info "Homebrew already installed. Skipping ..." 42 | fi 43 | 44 | log_info "Updating Homebrew formulas ..." 45 | brew update 46 | 47 | log_info "Installing Homebrew Services" 48 | brew tap homebrew/services 49 | 50 | log_info "Installing Postgres, a good open source relational database ..." 51 | brew install postgresql@13 libpq 52 | 53 | log_info "Starting Postgres ..." 54 | brew services start postgresql@13 55 | 56 | log_info "Adding Postgres to PATH ..." 57 | echo 'export PATH="/opt/homebrew/opt/postgresql@13/bin:$PATH"' >> $shell_file 58 | echo 'export PATH="/opt/homebrew/opt/libpq/bin:$PATH"' >> $shell_file 59 | export PATH="/opt/homebrew/opt/postgresql@13/bin:$PATH" 60 | export PATH="/opt/homebrew/opt/libpq/bin:$PATH" 61 | 62 | log_info "Installing Redis, a good key-value database ..." 63 | brew install redis 64 | 65 | log_info "Starting Redis ..." 66 | brew services start redis 67 | 68 | log_info "Installing and linking ImageMagick, to crop and resize images ..." 69 | brew install imagemagick 70 | 71 | log_info "Installing rbenv, to change Ruby versions ..." 72 | brew install rbenv 73 | 74 | if ! command -v rbenv &>/dev/null; then 75 | rbenv init 76 | eval "$(rbenv init -)" 77 | fi 78 | 79 | log_info "Installing ruby-build, to install Rubies ..." 80 | brew install ruby-build 81 | 82 | log_info "Upgrading OpenSSL ..." 83 | brew install openssl 84 | 85 | log_info "Installing image libs ..." 86 | brew install advancecomp jhead jpegoptim jpeg optipng oxipng pngcrush pngquant 87 | 88 | log_info "Installing coreutils ..." 89 | brew install coreutils 90 | 91 | ruby_version="3.2.1" 92 | 93 | log_info "Installing Ruby $ruby_version ..." 94 | rbenv install "$ruby_version" 95 | 96 | log_info "Setting $ruby_version as global default Ruby ..." 97 | rbenv global "$ruby_version" 98 | 99 | log_info "Updating to latest Rubygems version ..." 100 | gem update --system 101 | 102 | log_info "Installing Bundler to install project-specific Ruby gems ..." 103 | gem install bundler 104 | 105 | log_info "Configuring Bundler for faster, parallel gem installation ..." 106 | number_of_cores=$(sysctl -n hw.ncpu) 107 | bundle config --global jobs $((number_of_cores - 1)) 108 | 109 | log_info "Installing Rails ..." 110 | gem install rails 111 | 112 | log_info "Installing MailHog ..." 113 | brew install mailhog 114 | 115 | log_info "Installing Node ..." 116 | brew install node 117 | 118 | log_info "Installing pnpm ..." 119 | npm install -g pnpm 120 | -------------------------------------------------------------------------------- /linux: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | 3 | # Install Rails 4 | 5 | trap 'ret=$?; test $ret -ne 0 && printf "failed\n\n" >&2; exit $ret' EXIT 6 | 7 | # Ubuntu 22+ will prompt to restart services without these set 8 | export NEEDRESTART_MODE=a 9 | export DEBIAN_FRONTEND=noninteractive 10 | 11 | set -e 12 | log_info() { 13 | printf "\n\e[0;35m $1\e[0m\n\n" 14 | } 15 | 16 | if [ ! -f "$HOME/.bashrc" ]; then 17 | touch $HOME/.bashrc 18 | fi 19 | 20 | log_info "Updating Packages ..." 21 | sudo -E apt-get update 22 | 23 | log_info "Installing Git ..." 24 | sudo -E apt-get -y install git 25 | 26 | log_info "Installing build essentials ..." 27 | sudo -E apt-get -y install build-essential 28 | 29 | log_info "Installing libraries for common gem dependencies ..." 30 | sudo -E apt-get -y install libxslt1-dev libcurl4-openssl-dev libksba8 libksba-dev libreadline-dev libssl-dev zlib1g-dev libsnappy-dev libyaml-dev 31 | 32 | log_info "Installing sqlite3 ..." 33 | sudo -E apt-get -y install libsqlite3-dev sqlite3 34 | 35 | log_info "Installing Postgres ..." 36 | sudo -E apt-get -y install postgresql postgresql-server-dev-all postgresql-contrib libpq-dev 37 | sudo -E service postgresql status || sudo -E service postgresql start 38 | cd /tmp && sudo -u postgres createuser -s "$USER" 39 | 40 | log_info "Installing curl ..." 41 | sudo -E apt-get -y install curl 42 | 43 | log_info "Installing Redis ..." 44 | cd /tmp && \ 45 | wget https://download.redis.io/redis-stable.tar.gz && \ 46 | tar -xzvf redis-stable.tar.gz && \ 47 | cd redis-stable && \ 48 | make && \ 49 | sudo -E make install 50 | cd /tmp && \ 51 | rm redis-stable.tar.gz && \ 52 | rm -Rf redis-stable 53 | 54 | sudo adduser --system --group --no-create-home redis 55 | FILE="/etc/systemd/system/redis-server.service" 56 | if [ ! -f "$FILE" ]; then 57 | sudo bash -c "cat > $FILE" < $FILE" <> ~/.bashrc 128 | printf 'eval "$(rbenv init - --no-rehash)"\n' >> ~/.bashrc 129 | fi 130 | 131 | export PATH="$HOME/.rbenv/bin:$PATH" 132 | eval "$(rbenv init -)" 133 | fi 134 | 135 | if [[ ! -d "$HOME/.rbenv/plugins/ruby-build" ]]; then 136 | log_info "Installing ruby-build, to install Rubies ..." 137 | git clone https://github.com/rbenv/ruby-build.git ~/.rbenv/plugins/ruby-build 138 | fi 139 | 140 | ruby_version="3.2.1" 141 | 142 | log_info "Installing Ruby $ruby_version ..." 143 | rbenv install "$ruby_version" 144 | 145 | log_info "Setting $ruby_version as global default Ruby ..." 146 | rbenv global $ruby_version 147 | rbenv rehash 148 | 149 | log_info "Updating to latest Rubygems version ..." 150 | gem update --system 151 | 152 | log_info "Installing Rails ..." 153 | gem install rails 154 | 155 | log_info "Installing Bundler ..." 156 | gem install bundler 157 | 158 | log_info "Installing MailHog ..." 159 | sudo wget -qO /usr/bin/mailhog https://github.com/mailhog/MailHog/releases/download/v1.0.1/MailHog_linux_amd64 160 | sudo chmod +x /usr/bin/mailhog 161 | 162 | log_info "Installing Node.js 18 ..." 163 | curl -sL https://deb.nodesource.com/setup_18.x | sudo -E bash - 164 | sudo -E apt-get -y install nodejs 165 | sudo npm install -g svgo 166 | sudo npm install -g pnpm 167 | --------------------------------------------------------------------------------