From ae0792ec716ea36bbec6f7fd48c950bc440b88df Mon Sep 17 00:00:00 2001 From: pvincent Date: Fri, 16 Jan 2026 09:15:16 +0000 Subject: [PATCH] install.sh --- install.sh | 20 +++++ src/local_rails.template.rb | 160 ++++++++++++++++++++++++++++++++++++ src/railsrc | 11 +++ 3 files changed, 191 insertions(+) create mode 100755 install.sh create mode 100644 src/local_rails.template.rb create mode 100644 src/railsrc diff --git a/install.sh b/install.sh new file mode 100755 index 0000000..9d73ddf --- /dev/null +++ b/install.sh @@ -0,0 +1,20 @@ +#!/usr/bin/env bash + +# CONSTANTS + +BASEDIR=$(dirname "$0") + +# FUNCTIONS + +function install { + mkdir -p $HOME/.local/rails + ln -sf $(realpath $BASEDIR/src/railsrc) $HOME/.railsrc + ln -sf $(realpath $BASEDIR/src/local_rails.template.rb) $HOME/.local/rails/template.rb + + echo Rails Templating stuff installed succesfully! +} + +# MAIN + +install + diff --git a/src/local_rails.template.rb b/src/local_rails.template.rb new file mode 100644 index 0000000..bd768eb --- /dev/null +++ b/src/local_rails.template.rb @@ -0,0 +1,160 @@ +run "rm .ruby-version" + +# GEMFILE +file "Gemfile", <<-CODE +ruby '#{`ruby -v | cut -d" " -f2`.strip}' +source 'https://rubygems.org' + +gem 'bootsnap', require: false +gem 'dotenv-rails' +gem 'importmap-rails' +gem 'propshaft' +gem 'puma' +gem 'rails' +gem 'solid_cable' +gem 'solid_cache' +gem 'solid_queue' +gem 'sqlite3' +gem 'stimulus-rails' +gem 'tailwindcss-rails' +gem 'thruster', require: false +gem 'turbo-rails' + +group :development do + gem 'debug' + gem 'erb-formatter' + gem 'error_highlight' + gem 'htmlbeautifier' + gem 'rails_live_reload' + gem 'rubocop', require: false + gem 'rubocop-packaging' + gem 'rubocop-performance' + gem 'rubocop-rspec' + gem 'rubocop-shopify' + gem 'rubocop-thread_safety' + gem 'ruby-lsp-rails' +end +CODE + +# CODIUM + +inside '.vscode' do + file "extensions.json", <<-CODE +{ + "recommendations": [ + "aki77.rails-db-schema", + "aliariff.vscode-erb-beautify", + "bierner.markdown-mermaid", + "bpruitt-goddard.mermaid-markdown-syntax-highlighting", + "bradlc.vscode-tailwindcss", + "formulahendry.auto-close-tag", + "formulahendry.auto-rename-tag", + "jgclark.vscode-todo-highlight", + "redhat.vscode-yaml", + "shopify.ruby-lsp", + "waderyan.gitblame", + "yzhang.markdown-all-in-one", + "mads-hartmann.bash-ide-vscode", + "etsi0.class-collapse", + ] +} +CODE + file 'settings.json', <<-CODE +{ + // -----------------256-color ANSI SUPPORT ---------------- + "terminal.integrated.shellIntegration.enabled": false, + "terminal.integrated.minimumContrastRatio": 1, + "terminal.integrated.drawBoldTextInBrightColors": false, + "workbench.colorCustomizations": { + "terminal.background": "#1f1f1f", + "terminal.ansiYellow": "#b38210" //BROWN UNIX ANSI + }, + "workbench.colorTheme": "Default Dark Modern", + // --------------------------------------------------------- + "[ruby]": { + "editor.defaultFormatter": "Shopify.ruby-lsp", // Use the Ruby LSP as the default formatter + "editor.semanticHighlighting.enabled": true, // Enable semantic highlighting + "editor.formatOnType": true // Enable formatting while typing + }, + "[erb]": { + "editor.defaultFormatter": "aliariff.vscode-erb-beautify", + }, + "debug.internalConsoleOptions": "neverOpen", + "editor.formatOnSave": true, + "editor.tabSize": 2, // Use 2 spaces for indentation + "editor.insertSpaces": true, + "emmet.includeLanguages": { + "erb": "html" + }, + "files.associations": { + "*.html.erb": "erb", + "*.tailwind.css": "tailwindcss", + }, + "tailwindCSS.emmetCompletions": true, + "todohighlight.enableDiagnostics": true, + "todohighlight.include": [ + "**/*.js", + "**/*.html", + "**/*.css", + "**/*.rb", + "**/*.txt", + "**/*.md", + "**/*.erb", + "**/*.rake" + ], + "vscode-erb-beautify.keepBlankLines": 1, + "terminal.integrated.cursorBlinking": true, + "terminal.integrated.localEchoEnabled": "off", + "terminal.integrated.fontLigatures.enabled": true, + "class-collapse.languages.supportedLanguages": [ + "erb", + "html", + "javascript", + "markdown", + ], + "class-collapse.style.openCollapseOpacity": 0.7, + "class-collapse.style.placeholderTextColor": "#FFFF0055", + "class-collapse.style.placeholderText": "≈", +} +CODE + +end + +# RUBOCOP +file ".rubocop.yml", <<-CODE +AllCops: + TargetRubyVersion: #{`ruby -v | cut -d" " -f2 | grep -oE "[0-9]+\.[0-9]+"`.strip} + NewCops: enable + Exclude: + - "db/schema.rb" + +Style/FrozenStringLiteralComment: + Enabled: false + +Style/Documentation: + Enabled: false +CODE + + +after_bundle do + + generate(:controller, "#{@app_name} index") + route "root to: '#{@app_name}#index'" + + # bin/dev + file "bin/dev", <<-CODE +#!/usr/bin/env bash + +# launch rails with puma plugin tailwindcss with no 'Done in ms' messages! +rails server 2>&1 | grep -vE '(^Done in |^sh: 1: watchman)' +CODE + run "rm Procfile.dev" + run "grep -q 'plugin :tailwindcss' config/puma.rb || sed -i -E 's/(plugin :tmp_restart)/\\1\\n\\n# Run the Tailwindcss watcher alongside Puma\\nplugin :tailwindcss if ENV.fetch(\"RAILS_ENV\", \"development\") == \"development\"/' config/puma.rb" + + initialized_git=system('test -f ~/.gitconfig && grep email ~/.gitconfig && grep name ~/.gitconfig') + if initialized_git + git :init + git add: "." + git commit: %Q{ -m 'initial commit' } + end +end diff --git a/src/railsrc b/src/railsrc new file mode 100644 index 0000000..a5e2262 --- /dev/null +++ b/src/railsrc @@ -0,0 +1,11 @@ +--force +--css=tailwind + +--skip-ci +--skip-docker +--skip-kamal +--skip-jbuilder +--skip-brakeman +--skip-system-test + +--template=~/.local/rails/template.rb