diff --git a/.devcontainer/codespaces/devcontainer.json b/.devcontainer/codespaces/devcontainer.json new file mode 100644 index 0000000000..5e57b1de95 --- /dev/null +++ b/.devcontainer/codespaces/devcontainer.json @@ -0,0 +1,18 @@ +// For format details, see https://aka.ms/devcontainer.json. For config options, see the +// README at: https://github.com/devcontainers/templates/tree/main/src/universal +{ + "name": "For Codespaces", + + "image": "mcr.microsoft.com/devcontainers/universal:4", + + "containerEnv": { + "DATABASE_URL": "postgresql://postgres:@localhost" + }, + + "onCreateCommand": "bash --login .devcontainer/codespaces/onCreateCommand.sh", + + "postCreateCommand": "bash --login .devcontainer/codespaces/postCreateCommand.sh", + + "postStartCommand": "bash --login .devcontainer/codespaces/postStartCommand.sh" + +} diff --git a/.devcontainer/codespaces/onCreateCommand.sh b/.devcontainer/codespaces/onCreateCommand.sh new file mode 100644 index 0000000000..35419657aa --- /dev/null +++ b/.devcontainer/codespaces/onCreateCommand.sh @@ -0,0 +1,38 @@ +# Workaround for install Ruby 4.0.0 with RVM +rvm list +curl -sSL https://rvm.io/mpapis.asc | gpg2 --import - +curl -sSL https://rvm.io/pkuczynski.asc | gpg2 --import - +rvm get master +rvm list known + +# Install Ruby +rvm install 3.4.6 +rvm install 4.0.0 +rvm --default use 4.0.0 +rvm list +ruby --version + +# Workaround for Yarn GPG key +curl -sS https://dl.yarnpkg.com/debian/pubkey.gpg | sudo gpg --dearmor -o /usr/share/keyrings/yarnkey.gpg +echo "deb [signed-by=/usr/share/keyrings/yarnkey.gpg] https://dl.yarnpkg.com/debian stable main" | sudo tee /etc/apt/sources.list.d/yarn.list +sudo apt update + +# Install Google Chrome +wget https://dl.google.com/linux/direct/google-chrome-stable_current_amd64.deb -O /tmp/google-chrome.deb +sudo apt update && sudo apt install -y /tmp/google-chrome.deb && rm /tmp/google-chrome.deb +google-chrome --version + +# Install Chromedriver +CHROMEDRIVER_VERSION=$(google-chrome --version | awk '{print $3}') +wget https://storage.googleapis.com/chrome-for-testing-public/${CHROMEDRIVER_VERSION}/linux64/chromedriver-linux64.zip +unzip chromedriver-linux64.zip +sudo mv chromedriver-linux64/chromedriver /usr/local/bin/ +rm -rf chromedriver-linux64.zip chromedriver-linux64 +chromedriver --version + +# Install libs +sudo apt install -y libvips + +# Cleanup +sudo apt-get clean +sudo rm -rf /var/lib/apt/lists/* diff --git a/.devcontainer/codespaces/postCreateCommand.sh b/.devcontainer/codespaces/postCreateCommand.sh new file mode 100644 index 0000000000..a35262c710 --- /dev/null +++ b/.devcontainer/codespaces/postCreateCommand.sh @@ -0,0 +1,16 @@ +rvm --default use $(cat ./.ruby-version) + +until docker info >/dev/null 2>&1; do sleep 1; done +docker rm postgres >/dev/null 2>&1 +docker run -d -i --name postgres -p 5432:5432 -e POSTGRES_HOST_AUTH_METHOD=trust postgres +until docker exec postgres pg_isready -U postgres; do sleep 1; done + +# Create config/database.yml +./bin/setup +# Setup & Create .env +./bin/setup + +# Create test database and run seeds +RAILS_ENV=test ./bin/rails dev:prime + +docker stop postgres diff --git a/.devcontainer/codespaces/postStartCommand.sh b/.devcontainer/codespaces/postStartCommand.sh new file mode 100644 index 0000000000..7e11a015f0 --- /dev/null +++ b/.devcontainer/codespaces/postStartCommand.sh @@ -0,0 +1,2 @@ + +docker start postgres diff --git a/spec/example_app/config/environments/development.rb b/spec/example_app/config/environments/development.rb index 31644dbb98..310817bdd1 100644 --- a/spec/example_app/config/environments/development.rb +++ b/spec/example_app/config/environments/development.rb @@ -75,4 +75,9 @@ # Apply autocorrection by RuboCop to files generated by `bin/rails generate`. # config.generators.apply_rubocop_autocorrect_after_generate! + + # In GitHub Codespaces, allow connections to the forwarded port. + if ENV["CODESPACES"] == "true" && ENV["RAILS_DEVELOPMENT_HOSTS"].present? + config.hosts << ENV["RAILS_DEVELOPMENT_HOSTS"] + end end