我注意到一个新的
Rails 7.0.2.4
应用程序附带了一个名为 bin/dev
的文件,而新的 Rails 7.0.3
应用程序似乎没有附带该文件。
我认为运行
bin/dev
而不是 rails server
会在本地主机上预编译 JavaScript(因此在开发中编辑 JavaScript 时,它比 Rails 服务器更可取),但我不明白为什么它适用于某些 Rails 版本而不适用于其他版本?我确信它可以与其他一些轨道机械一起工作,但我不确定是哪些部件。
(抱歉,这是一个基本问题)
cssbundling-rails
、jsbundling-rails
和tailwindcss-rails
都会添加或修改bin/dev和Procfile.dev:
bin/rails css:install:[tailwind|bootstrap|bulma|postcss|sass]
bin/rails javascript:install:[esbuild|rollup|webpack]
bin/rails tailwindcss:install
运行时
rails new
有两个选项默认添加这些gem并执行它们的安装命令:
-j, [--javascript=JAVASCRIPT] # Choose JavaScript approach [options: importmap (default), webpack, esbuild, rollup]
# Default: importmap
-c, [--css=CSS] # Choose CSS processor [options: tailwind, bootstrap, bulma, postcss, sass... check https://github.com/rails/cssbundling-rails]
-j
选项将addjsbundling-rails(除非指定了importmap)并将运行此方法:
def run_javascript
return if options[:skip_javascript] || !bundle_install?
case adjusted_javascript_option
when "importmap" then rails_command "importmap:install"
# NOTE: this command will add `bin/dev`
when "webpack", "esbuild", "rollup" then rails_command "javascript:install:#{adjusted_javascript_option}"
end
end
-c
选项将addtailwindcss-rails或cssbundling-rails并将运行此方法:
def run_css
return if !options[:css] || !bundle_install?
if !using_node? && options[:css] == "tailwind"
# NOTE: this command will add `bin/dev`
rails_command "tailwindcss:install"
else
# NOTE: and this command will add `bin/dev`
rails_command "css:install:#{options[:css]}"
end
end
如果省略
-j
选项,rails 默认安装 importmap-rails
,并且执行 bin/rails importmap:install
时,不会添加 bin/dev。
另外
bin/dev
只运行 foreman start -f Procfile.dev
。 foreman
同时运行多个命令。查看 Procfile.dev 以查看正在运行哪些命令。
css: bin/rails tailwindcss:watch # added by `tailwindcss-rails`
css: yarn build:css --watch # added by `cssbundling-rails`
js: yarn build --watch # added by `jsbundling-rails`
即使在我使用此方法并尝试运行 bin/dev 后,我也会收到此错误
$ ./bin/dev
/c/Users/user/AppData/Local/Microsoft/WindowsApps/foreman: line 6: /c/Users/user/AppData/Local/Microsoft/WindowsApps/ruby: No
such file or directory
我不知道为什么,如果您有任何答案,请帮忙。