因此,我已经使用Rails已有一段时间了。但是使用Rails 6时,我真的很努力地前进。我有一些用于资产和事物的自定义gem,但我不知道如何加载js文件。
我习惯了
application.js
//= require activestorage
//= require jquery-3.3.1.min
//= require popper.min
//= require bootstrap
//= require mdb
//= require wysiwyg
//= require addons/pickr.min
//= require modules/buttons
//= require modules/cards
//= require modules/waves
//= require activestorage
//= require turbolinks
//= require_tree .
Run Code Online (Sandbox Code Playgroud)
但这不会在Webpacker的Rails 6中加载。我无法为此找到在线的基本解决方案,该解决方案没有涉及向应用程序添加多个js文件和代码行以将解决方案修补在一起。我尝试过的是
app / javascript / packs / application.js
require("@rails/ujs").start()
require("turbolinks").start()
require ("jquery-3.3.1.min").start()
require ("popper.min").start()
require ("bootstrap").start()
require ("mdb").start()
require ("wysiwyg").start()
require ("addons/pickr.min").start()
require ("modules/buttons").start()
require ("modules/cards").start()
require ("modules/waves").start()
require("@rails/activestorage").start()
require("channels")
Run Code Online (Sandbox Code Playgroud)
资产位于gem内的正确位置(因此,rails 5应用程序中的第一个版本确实按预期加载了所有内容)。我可以在yarn中添加其中的一些,但是我想使用gem中的实际文件,而不仅仅是启动引导程序,有没有直接的解决方案?我也尝试过调整中的路径,require但这也不起作用。
谢谢你的帮助!
尝试将我的 Rails 应用程序作为 Docker 容器运行,但在打开页面时出现以下错误:
Webpacker can't find application in /app/public/packs/manifest.json. Possible causes:
1. You want to set webpacker.yml value of compile to true for your environment
unless you are using the `webpack -w` or the webpack-dev-server.
2. webpack has not yet re-run to reflect updates.
3. You have misconfigured Webpacker's config/webpacker.yml file.
4. Your webpack configuration is not creating a manifest.
Your manifest contains:
{
}
Run Code Online (Sandbox Code Playgroud)
当我简单地运行应用程序时,rails s它工作正常,并创建了public/packs文件夹。在日志中还有
/usr/local/bundle/gems/webpacker-4.2.0/lib/webpacker/runner.rb:13:in ``': No such file or directory …Run Code Online (Sandbox Code Playgroud) ruby-on-rails webpack webpack-dev-server webpacker ruby-on-rails-6
当我引用此块时,此弃用消息对我意味着什么变化?
def json_response(object, status = :ok)
render json: object, status: status
end
Run Code Online (Sandbox Code Playgroud)
编辑
消息:
Rails 6.1将返回Content-Type标头,而无需进行修改……请
#media_type改用
简单的问题,但不知何故,答案让我望而却步。
在使用 Zeitwerk 迁移到 Rails 6 时,我得到:
Please, check the "Autoloading and Reloading Constants" guide for solutions.
(called from <top (required)> at APP_ROOT/config/environment.rb:7)
rails aborted!
Zeitwerk::NameError: wrong constant name Enforce-calls-to-come-from-aws inferred by Module from directory
APP_ROOT/app/junkyard/enforce-calls-to-come-from-aws
Possible ways to address this:
* Tell Zeitwerk to ignore this particular directory.
* Tell Zeitwerk to ignore one of its parent directories.
* Rename the directory to comply with the naming conventions.
Run Code Online (Sandbox Code Playgroud)
这看起来很棒:这是一个垃圾文件夹,永远不应加载,因此忽略它是完全有道理的。
https://github.com/fxn/zeitwerk 上的 Zeitwerk 文档说
tests = "#{__dir__}/**/*_test.rb"
loader.ignore(tests)
loader.setup …Run Code Online (Sandbox Code Playgroud) 最近将我的 Rails 应用程序更新到 6.0。当我运行我的测试时,我从Referral模型的范围中收到以下弃用警告:
DEPRECATION WARNING: Class level methods will no longer inherit scoping from `with_all_final_state_fulfillments` in Rails 6.1. To continue using the scoped relation, pass it into the block directly. To instead access the full set of models, as Rails 6.1 will, use `Referral.unscoped`. (called from block in <class:Referral> at /Users/home/workspace/APPNAME/app/models/referral.rb:60)
Run Code Online (Sandbox Code Playgroud)
我的Referral模型范围有问题,但写成这样:
scope :with_all_final_state_fulfillments, lambda {
final_state_ids = Referral.with_fulfillment_in_final_state.pluck(:id).uniq
not_final_state_ids = Referral.where(id: final_state_ids).with_fulfillment_not_in_final_state.pluck(:id).uniq
id_list = final_state_ids - not_final_state_ids
Referral.where(id: id_list)
}
Run Code Online (Sandbox Code Playgroud)
ruby activerecord ruby-on-rails deprecation-warning ruby-on-rails-6
配置信息
rails version 6.0
ruby version 2.7.0
gem 'image_processing', '~> 1.2'
Run Code Online (Sandbox Code Playgroud)
存储.yml
local:
service: Disk
root: <%= Rails.root.join("storage") %>
Run Code Online (Sandbox Code Playgroud)
发展.rb
config.active_storage.service = :local
Rails.application.routes.default_url_options[:host] = 'localhost:3000'
config.action_mailer.default_url_options = { host: 'localhost', port: 3000 }
Run Code Online (Sandbox Code Playgroud)
只有当我使用service= :local. 使用 AWS S3 配置,使用:amazon它可以正常工作。
用户.rb模型
has_one_attached :avatar
#throwing exception
def avatar_urls
{
original: avatar.service_url
} if avatar.attachment
end
Run Code Online (Sandbox Code Playgroud)
访问时抛出avatar_urls异常( URI::InvalidURIError (bad URI(is not URI?): nil) )。但是,如果我将avatars_url方法更改为以下方法,则效果很好。
#working method
def avatar_urls
{
thumbnail: url_for(avatar.variant(resize: "100x100").processed)
} …Run Code Online (Sandbox Code Playgroud) 我目前使用的是 Rails 6.0.4,我想使用 Stimulus 构建一个新页面。在升级到 Rails 7 之前还有很多工作要做,因此如果可能的话,我想在 Rails 6 中使用导入映射和刺激。但到目前为止我还无法让刺激控制器工作。我按照以下步骤操作:
gem 'importmap-rails'
gem 'stimulus-rails'
Run Code Online (Sandbox Code Playgroud)
rails importmap:install这给了我config/importmap.rb, 和app/javascript/application.js,它在配置文件中被固定为“应用程序”。
application.js文件我的电流application.js在 inside ,所以我暂时app/assets/application.js.coffee将其重命名为并更新为以下内容:old_application.js.coffeeapplication.html.haml
= javascript_include_tag "old_application", defer: true
= javascript_importmap_tags
Run Code Online (Sandbox Code Playgroud)
这似乎有效,当我渲染页面时,它给了我以下导入映射:
{
"imports": {
"application": "/assets/application-920fceca960b509c1e98c9b27d167fa368d4b588ceb1be42d1667552714f94d5.js"
}
}
Run Code Online (Sandbox Code Playgroud)
rails stimulus:install这给了我里面app/javascript/controllers有index.js,application.js和的文件夹hello_controller.js。
它还更新config/importmap.rb为以下内容:
pin "application", preload: true
pin "@hotwired/stimulus", to: "stimulus.min.js", …Run Code Online (Sandbox Code Playgroud) javascript stimulusjs ruby-on-rails-6 import-maps ruby-on-rails-7
我正在创建一个 RoR-6 应用程序,并且从这一行的 application.html.erb 文件中抛出以下错误:
javascript_include_tag 'application', 'data-turbolinks-track': 'reload'
Run Code Online (Sandbox Code Playgroud)
我收到以下错误:
ActionView::Template::Error: The asset "application.js" is not present in the asset pipeline.
Run Code Online (Sandbox Code Playgroud)
该应用程序是通过运行创建的 rails new myapp -d postgres
我正在使用 Rails 6.0.0.rc1
我是 Rails 的新手,正在努力让 Jquery 和 Bootstrap 与 Rails 6 一起工作。我认为这与将应用程序从 rails 5 切换到 rails 6 并使用 webpacker 加载 Jquery 而不是将其作为 gem 加载有关。我已经完成了有关此操作的说明,但它似乎仍然无法正常工作。有人帮我解决了一个更具体的问题,并让我将其粘贴到视图中,然后似乎使它起作用:
<script src="https://code.jquery.com/jquery-3.3.1.slim.min.js" integrity="sha384-q8i/X+965DzO0rT7abK41JStQIAqVgRVzpbzo5smXKp4YfRvH+8abtTE1Pi6jizo" crossorigin="anonymous"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.14.7/umd/popper.min.js" integrity="sha384-UO2eT0CpHqdSJQ6hJty5KVphtPhzWj9WO1clHTMGa3JDZwrnQq4sF86dIHNDz0W1" crossorigin="anonymous"></script>
<script src="https://stackpath.bootstrapcdn.com/bootstrap/4.3.1/js/bootstrap.min.js" integrity="sha384-JjSmVgyd0p3pXB1rRibZUAYoIIy6OrQ6VrjIEaFf/nJGzIxFDsf4x0xIM+B07jRM" crossorigin="anonymous"></script>
Run Code Online (Sandbox Code Playgroud)
但是,这感觉像是一种解决方法,我希望 Jquery 在所有视图中都可用。以下是 /javascript/packs/application.js 的副本:
require("jquery")
require("@rails/ujs").start()
require("turbolinks").start()
require("@rails/activestorage").start()
require("channels")
require("bootstrap/dist/js/bootstrap")
import '../stylesheets/application'
import './bootstrap_custom.js'
//= require jquery3
//= require popper
//= require bootstrap-sprockets
Run Code Online (Sandbox Code Playgroud)
和/config/webpack/environment.js:
const { environment } = require('@rails/webpacker')
const webpack = require('webpack')
environment.plugins.prepend('Provide',
new webpack.ProvidePlugin({
$: 'jquery/src/jquery',
jQuery: 'jquery/src/jquery'
})
)
module.exports = …Run Code Online (Sandbox Code Playgroud) jquery ruby-on-rails twitter-bootstrap webpacker ruby-on-rails-6
我最近删除了我的本地项目,但做了一个 git clone 并从我上次提交的地方开始。当我尝试将图像上传到已配置的 AWS 时,出现以下错误:
Aws::Sigv4::Errors::MissingCredentialsError in RentalsController#create
Cannot load `Rails.config.active_storage.service`: missing credentials, provide credentials with one of the following options: - :access_key_id and :secret_access_key - :credentials - :credentials_provider
Run Code Online (Sandbox Code Playgroud)
我试图查看我的credentials.yml文件是否有任何错误,但是当我输入此命令时:
EDITOR="code --wait" rails credentials:edit
Run Code Online (Sandbox Code Playgroud)
...我收到此错误:
Couldn't decrypt config/credentials.yml.enc. Perhaps you passed the wrong key?
Run Code Online (Sandbox Code Playgroud)
可能是什么问题呢?
ruby-on-rails-6 ×10
ruby ×3
webpacker ×3
activerecord ×1
amazon-s3 ×1
import-maps ×1
javascript ×1
jquery ×1
stimulusjs ×1
webpack ×1