The solution to assets management in Rails
This README concerns the development aspect of the project. Visit
the site to learn how to use Rails Assets
in your application.
Bower is
depcreated
and new projects should not use it. Because Rails Assets is a proxy
between bower and bundler, it should also not be used in new
projects. Instead, there are multiple better
solutions
which work with modern versions of Rails:
A default path with Hotwire and import maps, an alternate path
using a thin integration with one of the popular JavaScript
bundlers, and finally the strict API path with a separate
repository for the front-end.
git clone [email protected]:tenex/rails-assets.git && cd rails-assets
bundle install && npm install
cp config/database{.sample,}.yml
cp config/application{.sample,}.yml
# edit config/database.yml and config/application.yml if necessary.
bin/rake db:setup
foreman start
rspec
tests will use capybara
for tests. Capybara’s driver is set
up to use selenium
with headless Chrome. Therefore, you will need
Chrome and the Chrome Selenium web driver.
# get chrome
cat << EOF > /etc/apt/sources.list.d/google-chrome.list
deb [arch=amd64] http://dl.google.com/linux/chrome/deb/ stable main
EOF
wget -O- https://dl.google.com/linux/linux_signing_key.pub |gpg
--dearmor > /etc/apt/trusted.gpg.d/google.gpg
apt update && apt install -y google-chrome-stable
# get appropriate driver
chrome_version="$(google-chrome --version | cut -d ' ' -f3)" # Google Chrome 103.0.5060.53 -> 103.0.5060.53
(wget "https://chromedriver.storage.googleapis.com/${chrome_version}/chromedriver_linux64.zip" &&
unzip chromedriver_linux64.zip -d /usr/local/bin)
bin/rake 'component:convert[jquery,2.0.3]'
This will create rails-assets-NAME-VERSION.gem
file.
You can remove this component by:
bin/rake 'component:destroy[jquery,2.0.3]'
For packages from bower that have a .js in their name like typeahead.js which can generate a gem with the name rails-assets-typehead.js if You want to use this gem with Rails 4.2 or higher in order for your gem to work in your application.js you have to require it as follow
//= require typeahead.js.js
instead of
//= require typeahead.js
Maintained by Tenex Developers @tenex.
Originally created by @teamon, @porada and @sheerun, with the help of contributors. ❤️
Please don’t tweet bugs to us—report an issue instead. ✌️