标签: ruby-on-rails-6

Rails 6 的资产管道中不存在资产“application.js”

我正在创建一个 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

asset-pipeline ruby-on-rails-6

10
推荐指数
1
解决办法
5600
查看次数

如何处理 Rails ENCRYPTED 凭证文件中的合并冲突

使用 Rails 6(或 5.2)加密凭据,我在管理和解决文件中的合并冲突时遇到了困难credentials.yml.enc。正如文档中所述,目的是将加密凭据添加到源代码管理中(https://guides.rubyonrails.org/security.html#custom-credentials

例如, branch_a添加凭据service a并合并到 master branch_b添加凭据service b并在变基时,文件中的冲突credentials.yml.enc如下所示:

<<<<<<< HEAD
sahdkajshdkajhsdkjahsdkjahsdkajhsdkjahsdkjahdskjahsdjkahsdencryptedstring-a09dpjmcas==
=======
laskdjalksjdlakjsdlaksjdlakjsdlaksjdlakjsdlajsdlkajsdlkjasdljalsdajsdencryptedstringrere=
>>>>>>> branch_b
Run Code Online (Sandbox Code Playgroud)

我可以查看每个分支上的未加密内容credentials.yml.enc并非常手动地解决冲突,但是是否有更好的方法来管理凭据以避免这些凭据冲突。

ruby-on-rails credentials ruby-on-rails-6

10
推荐指数
2
解决办法
3456
查看次数

Rails Upsert PG created_at 问题

抱歉,如果之前已经回答过这个问题,但我找不到明确的答案。

当然有人在使用时遇到过这个问题,upsert您需要指定包括created_at和在内的每一列updated_at

created_at当更新插入发生时如何不更新时间戳?我只想插入created_at一次。

a = User.upsert({
          name: ....,
          age: ....
          created_at: DateTime.now, 
          updated_at: DateTime.now
        }, unique_by: :upsert_user_index )
Run Code Online (Sandbox Code Playgroud)

ruby ruby-on-rails ruby-on-rails-6

10
推荐指数
2
解决办法
5005
查看次数

无法解密 config/credentials.yml.enc。也许你传错了钥匙?

我最近删除了我的本地项目,但做了一个 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 amazon-s3 amazon-web-services ruby-on-rails-6

10
推荐指数
1
解决办法
5851
查看次数

将 SAML 集成到 Rails 应用程序中

我正在尝试在我的项目中添加ruby​​-saml。但我对如何在我的场景中实现它有点困惑。我在一个网站上,比如说 abc.com,有一个按钮。当我单击该按钮时,我需要重定向到网站 xyz.com,在该网站中我需要传递 SAML XML 并将其发送到 xyz.com/SAML。SAML 请求将由 xyz.com 处理,然后他们将向我发送响应。谁能给我一些想法如何实现它?

另外,我对这些领域感到困惑。有人可以给我一个快速总结吗?

settings.assertion_consumer_service_urlsettings.sp_entity_idsettings.idp_entity_idsettings.idp_sso_service_urlsettings.idp_slo_service_url




def init
  request = OneLogin::RubySaml::Authrequest.new
  saml_settings.name_identifier_value_requested = "testuser@example.com"
  saml_settings.name_identifier_format = "urn:oasis:names:tc:SAML:1.1:nameid-format:emailAddress"
  redirect_to(request.create(saml_settings))
end



 def saml_settings
  settings = OneLogin::RubySaml::Settings.new

  settings.assertion_consumer_service_url = "http://#{request.host}/saml/consume"
  settings.idp_sso_service_url            = "https://app.onelogin.com/trust/saml2/http-post/sso/#{OneLoginAppId}"
  settings.idp_sso_service_binding        = "urn:oasis:names:tc:SAML:2.0:bindings:HTTP-POST" # or :post, :redirect
  settings.idp_slo_service_binding        = "urn:oasis:names:tc:SAML:2.0:bindings:HTTP-Redirect" # or :post, :redirect
  settings.idp_cert_fingerprint           = OneLoginAppCertFingerPrint
  settings.idp_cert_fingerprint_algorithm = "http://www.w3.org/2000/09/xmldsig#sha1"
  settings.name_identifier_format         = "urn:oasis:names:tc:SAML:1.1:nameid-format:emailAddress"

  # Optional for most SAML IdPs
  settings.authn_context = "urn:oasis:names:tc:SAML:2.0:ac:classes:PasswordProtectedTransport"
  # or as an array
  settings.authn_context …
Run Code Online (Sandbox Code Playgroud)

ruby ruby-on-rails saml ruby-saml ruby-on-rails-6

10
推荐指数
1
解决办法
2026
查看次数

如何在带有 Webpack 的 Rails 6 中使用自定义字体

对于我新启动的 Rails 6 应用程序,我想要一组自定义字体。我的设置如下所示:

# app/assets/stylesheets/my-font.sass

@font-face
  font-family: 'my-font'
  src: url('fonts/my-font.eot') format('embedded-opentype'), url('fonts/my-font.woff') format('woff'), url('fonts/my-font.ttf') format('truetype'), url('fonts/my-font.svg#my-font') format('svg')
  font-weight: 400
  font-style: normal
Run Code Online (Sandbox Code Playgroud)

然后在app/assets/stylesheets/fonts我的 sass 文件中引用了所有 4 个文件。

application.sass有以下导入:@import 'my-font'.

当我运行时rails assets:precompile,它还会将所有 4 个带有后缀版本(例如my-font-7384658374658237465837246587263458.eot)的文件放在public目录中。

但是,当我运行该应用程序时,浏览器正在根目录中查找名为 的文件,该文件my-font.eot当然不存在并且是 404。这对我来说绝对是一个配置问题,但我不知道在哪里。任何帮助将非常感激。

ruby-on-rails rails-sprockets ruby-on-rails-6

9
推荐指数
2
解决办法
6307
查看次数

如何在Rails 6中使用茧形宝石

已经cocoon gem在Rails 4和Rails 5应用程序中用于嵌套表单。目前,我正在将rails 5.2应用程序之一(正在使用cocoon gem)更新为rails 6。

由于Rails 6使用的是webpacker,所以我厌倦了application.js像以前版本的rails一样要求文件中包含茧形javascript 。

app / javascript / application.js

//= require cocoon
Run Code Online (Sandbox Code Playgroud)

但是不幸的是,事情似乎没有用。也尝试过导入,但是由于茧不能作为javascript软件包使用,因此它当然也无法正常工作。

任何解决方案或替代方案?

ruby-on-rails cocoon-gem ruby-on-rails-6

9
推荐指数
1
解决办法
668
查看次数

如何在 Rails 6 中配置 Jasmine?

如何在 Rails 6 环境中配置 Jasmine(其中 Webpack 替换了 Javascript 的资产管道),以便我可以测试我为我的应用程序编写的 Javascript 模块?

我安装了 jasmine gem,运行rails generate jasmine:install并编辑jasmine.yml以指向我的 Javascript 源代码和规范的位置。

问题是我不能使用导入/导出语句。(例如,试图加载我的第一模块向测试结果在此错误在Chrome: Uncaught SyntaxError: Unexpected token 'export'

据我所知,我需要设置 Jasmine 才能使用 babel;但是,我没有找到关于如何在新的 Rails 6 布局中执行此操作的说明。

ruby-on-rails jasmine babeljs es6-modules ruby-on-rails-6

9
推荐指数
1
解决办法
467
查看次数

是否/为什么 Rails 6 仍在使用/推荐 CoffeeScript?

我是 Rails 这个词的新手。使用 Rails 6 并遵循指南/教程。在官方 Rails 指南中,有 CoffeeScript 示例,甚至建议使用 CoffeeScript,请参阅:https : //guides.rubyonrails.org/working_with_javascript_in_rails.html#an-introduction-to-ajax(即使在边缘指南中:https: //edgeguides.rubyonrails.org/working_with_javascript_in_rails.html#an-introduction-to-ajax )。

作为一名经验丰富的 JavaScript 开发人员,我在过去三年中从未见过任何公司选择 CoffeeScript 作为他们的 JavaScript 工具。由于 CoffeeScript 的创新,JavaScript 得到了发展,对 CoffeeScript 的需求消失了。

现在为什么 Rails 仍然推荐它?我觉得它很可能会让 Rails 的新手感到困惑,因为对于大多数新开发人员来说,CoffeeScript 甚至不再是一个东西。如果您阅读有关 JavaScript 的内容,这是一堂很好的历史课,但仅此而已。

谢谢!

ruby-on-rails coffeescript ruby-on-rails-6

9
推荐指数
2
解决办法
2122
查看次数

Ruby 2.6.5 和 PostgreSQL pg-gem 分段错误

从控制台我无法执行任何涉及数据库的操作。我得到一个分段错误。

.rbenv/versions/2.6.5/lib/ruby/gems/2.6.0/gems/pg-1.1.4/lib/pg.rb:56: [BUG] Segmentation fault at 0x0000000000000110 ruby 2.6.5p114 (2019-10-01 revision 67812) [x86_64-darwin18]

它实际上是可能需要数据库的任何操作,包括 MyModel.new。

-- Control frame information ----------------------------------------------- c:0071 p:---- s:0406 e:000405 CFUNC :initialize c:0070 p:---- s:0403 e:000402 CFUNC :new c:0069 p:0016 s:0398 e:000397 METHOD /Users/xxx/.rbenv/versions/2.6.5/lib/ruby/gems/2.6.0/gems/pg-1.1.4/lib/pg.rb:56 c:0068 p:0107 s:0393 e:000392 METHOD /Users/xxx/.rbenv/versions/2.6.5/lib/ruby/gems/2.6.0/gems/activerecord-6.0.1/lib/active_record/connection_adapters/postgres

我已经卸载并重新安装了 pg gem。并重建了数据库。并重新启动 PostgreSQL。

我看到其他人在Puma下运行时报告问题,但我的配置在Puma下有效,在console下失败!

为清楚起见编辑:

是的,使用捆绑器。

使用相同的堆栈跟踪rails cbundle exec rails c具有相同的效果(段错误)启动 rails 控制台。

Gemfile.lock 有 pg (1.1.4)

我重新捆绑,指定捆绑路径。堆栈跟踪现在具有该捆绑路径,因此我猜默认情况下捆绑程序使用的是 rbenv 路径。

ruby postgresql ruby-on-rails-6

9
推荐指数
1
解决办法
2708
查看次数