我正在使用Active Storage设置新的Rails 5.2应用程序,并使用AWS托管生产中的图像。
但是,我在读取凭据时遇到问题:
2018-07-06T08:11:52.625415+00:00 app[web.1]: ! Unable to load application: Aws::Sigv4::Errors::MissingCredentialsError: Cannot load `Rails.config.active_storage.service`:
2018-07-06T08:11:52.625432+00:00 app[web.1]: missing credentials, provide credentials with one of the following options:
2018-07-06T08:11:52.625435+00:00 app[web.1]: - :access_key_id and :secret_access_key
2018-07-06T08:11:52.625437+00:00 app[web.1]: - :credentials
2018-07-06T08:11:52.625479+00:00 app[web.1]: - :credentials_provider
Run Code Online (Sandbox Code Playgroud)
这是现有的S3存储桶,我为此应用创建了一个新用户。我对CORS等感到满意。
在S3FullAccess组下设置用户。
我已经通过修改了我应用程序中的凭据 $EDITOR="atom --wait" rails credentials:edit
文件内容:
aws:
access_key_id: [my access key]
secret_access_key: [my secrect key]
# Used as the base secret for all MessageVerifiers in Rails, including the one protecting cookies.
secret_key_base: [my secret key base]
Run Code Online (Sandbox Code Playgroud)
请注意,这是YAML格式的,我使用过一个空格,并且在键上使用了一个制表符,但这似乎没有什么不同。 …
ruby-on-rails amazon-s3 rails-activestorage ruby-on-rails-5.2
我刚刚升级了5.1.4。应用程式至5.2,并尝试将Paperclip换成ActiveStorage。在尝试使用图像更新现有记录时,出现以下错误:
无法自动加载常量ActiveStorage :: Blob :: Analyzable,需要/Users/Simon/.rvm/gems/ruby-2.4.0/gems/activestorage-5.2.0/app/models/active_storage/blob/analyzable.rb进行定义它
在我的模型中:
has_one_attached :pic
Run Code Online (Sandbox Code Playgroud)
在我的控制器中:
...
def update
respond_to do |format|
if @gin.update(gin_params)
format.html { redirect_to @gin, notice: 'Gin was successfully updated.' }
format.json { render :show, status: :ok, location: @gin }
else
format.html { render :edit }
format.json { render json: @gin.errors, status: :unprocessable_entity }
end
end
end
Run Code Online (Sandbox Code Playgroud)
...
def gin_params params.require(:gin).permit(:name, :text, :snippet,
:pic, :slug, :abv, distillery_attributes: [:id, :name], botanical_ids:
[]) end
Run Code Online (Sandbox Code Playgroud)
在storage.yml中:
amazon:
service: S3
access_key_id: <%= Rails.application.credentials.dig(:aws, :access_key_id) %>
secret_access_key: <%= …Run Code Online (Sandbox Code Playgroud) 我在heroku上的应用程序遇到webpacker问题。
日志:
ActionView::Template::Error (Webpacker can't find application.js in /app/public/packs/manifest.json. Possible causes:
2018-07-04T18:47:08.192729+00:00 app[web.1]: 1. You want to set webpacker.yml value of compile to true for your environment
2018-07-04T18:47:08.192730+00:00 app[web.1]: unless you are using the `webpack -w` or the webpack-dev-server.
2018-07-04T18:47:08.192733+00:00 app[web.1]: 2. webpack has not yet re-run to reflect updates.
2018-07-04T18:47:08.192734+00:00 app[web.1]: 3. You have misconfigured Webpacker's config/webpacker.yml file.
2018-07-04T18:47:08.192735+00:00 app[web.1]: 4. Your webpack configuration is not creating a manifest.
2018-07-04T18:47:08.192737+00:00 app[web.1]: Your manifest contains:
2018-07-04T18:47:08.192738+00:00 app[web.1]: {
2018-07-04T18:47:08.192740+00:00 app[web.1]: …Run Code Online (Sandbox Code Playgroud) 由于这是一个全新的应用程序,我使用的是 Rails 6 测试版。
我正在尝试使用 Knock Gem,但是在尝试通过发布用户获得 API 响应时,我收到此错误:
LoadError(无法自动加载常量 Api::V1::UserTokenController,需要 /Users/Simon/Sites/TGD/ginbackend/app/controllers/api/v1/user_token_controller.rb 来定义它):
但是,我确实user_token_controller.rb在该位置有文件。我正在为我的 API 端点使用命名空间:
Rails.application.routes.draw do
namespace :api do
namespace :v1 do
post 'user_token' => 'user_token#create' # <= manually placed this under the namespace
resources :distilleries
resources :botanicals
resources :gins
resources :botanicals_gins
end
end
end
Run Code Online (Sandbox Code Playgroud)
根据 Knock 文档,我还更新了我的application_controller.rb,请注意它位于app/controllers/并且不是app/controllers/api/v1 问题吗?
class ApplicationController < ActionController::API
include Knock::Authenticable
private
def authenticate_v1_user
authenticate_for V1::User
end
end
Run Code Online (Sandbox Code Playgroud) 我在项目开始时创建了一个注释模型,但现在我已经意识到我需要创建一些多态关系,所以我也可以使用其他一些模型的注释.考虑到我已经拥有的代码等,我认为我可能更容易从头开始,所以我可以以正确的方式为我的新多态世界构建所有视图/控制器等.
我知道我可以rails destroy model comments实现这个目标,但我有两个问题:
ruby-on-rails models polymorphic-associations rails-migrations destroy
这是一个基本问题,我无法在网上找到详细信息.
我有一个名为'Radios'的模型,我希望在我的主页上显示最后一个收音机 - templates/page/index.html.eex
到目前为止我所拥有的:
radio.ex
defmodule Radios.Radio do
use Radios.Web, :model
import Ecto.Query
schema "radios" do
field :name, :string
field :desc, :string
field :price, :integer
field :text1, :string
field :text2, :string
field :text3, :string
field :text4, :string
field :mainimg, :string
timestamps()
end
@doc """
Builds a changeset based on the `struct` and `params`.
"""
def changeset(struct, params \\ %{}) do
struct
|> cast(params, [:name, :desc, :price, :text1, :text2, :text3, :text4, :mainimg])
|> validate_required([:name, :desc, :price, :text1, :text2, :mainimg])
end …Run Code Online (Sandbox Code Playgroud) 我刚刚开始在我的 rails 5.2 应用程序中使用 RSpec 进行测试。我正在将我的应用程序部署到我的远程 Github 存储库,然后在部署到 Heroku 之前由 Travis 进行测试。
我创建了一些非常简单的测试,这些测试一直通过,但我刚刚添加了一个新模型,distilleries而 Travis 现在构建失败。
Travis 似乎在抱怨无法在我的 Webpack 清单中找到文件。我的应用程序在本地完美运行。
当我rspec spec/models/distillery_spec.rb在控制台中运行时,出现 0 个错误。
我是 Rails 测试的新手,所以如果我在某处犯了新手错误,请保持温和。
特拉维斯日志
...
Failures:
1) Distilleries GET /distilleries works! (now write some real specs)
Failure/Error: <%= javascript_pack_tag 'application' %>
ActionView::Template::Error:
Webpacker can't find application.js in /home/travis/build/sfcooper/GD/public/packs-test/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 …Run Code Online (Sandbox Code Playgroud) 我的 localhost:3000 无法打开 safari 说Cannot open the page https://localhost:3000 because safari cannot establish a secure connection.
这让我意识到浏览器正在从 http 重定向到 https。这是有道理的,因为我最近config.force_ssl = true在我的配置/环境文件中添加了这一点。我似乎已经在开发和生产环境中添加了它,所以我已经将它从开发中完全删除了。停止 Rails 服务器,然后重新启动它。但它仍然在重定向。这可能还来自哪里?我在 Safari 和 Chrome 中得到相同的结果。
我知道很少(没有)JavaScript,或者很多关于使用API的知识.但是,我想通过qype.com API在我的网站上显示一些酒店评论.然而,我正在努力管理这个.
这是我到目前为止的代码:
$(document).ready( function() {
$.getJSON( "http://api.yelp.com/business_review_search?term=hilton%20metropole&location=B26%203QJ&ywsid=APIKEY Removed",
function(data) {
$.each( data.businesses, function(i,businesses) {
content = '<p>' + businesses.reviews.text_excerpt + '</p>';
content = '<p>' + businesses.reviews.date + '</p>';
$(content).appendTo("#review");
} );
}
);
} );
Run Code Online (Sandbox Code Playgroud)
我在身体中有一个名为review的div,我想显示文本.
任何建议都很受欢迎.
可以在http://api.yelp.com/business_review_search?term=hilton%20metropole&location=B26%203QJ&ywsid=lOoGGbkYpVmTvxHlWGT2Lw找到JSON.
另外,我在同一页面上有多个业务,如何在同一页面上多次使用这些业务,但是在不同的位置输出数据?
我有一个评论模型,目前正在使用文章.我现在想让用户能够对Coffeeshop评论发表评论.我可以使用相同的评论表,还是应该有一个单独的评论表(感觉很笨拙).我已经很久没有用RoR构建(几周),所以仍然试图掌握基础知识.
我会将它们嵌套在routes.rb(以及如何)
resources :coffeeshops do
resources :articles do
resources :comments
end
Run Code Online (Sandbox Code Playgroud)
要么
resources :coffeeshops do
resources :comments
end
resources :articles do
resources :comments
end
Run Code Online (Sandbox Code Playgroud)
我的模特看起来像:
用户
class User < ApplicationRecord
has_many :comments
end
Run Code Online (Sandbox Code Playgroud)
评论
class Comment < ApplicationRecord
belongs_to :user
belongs_to :article
belongs_to :coffeeshop
end
Run Code Online (Sandbox Code Playgroud)
用品
class Article < ApplicationRecord
has_many :comments, dependent: :destroy
end
Run Code Online (Sandbox Code Playgroud)
咖啡店
class Coffeeshop < ApplicationRecord
has_many :comments, dependent: :destroy
Run Code Online (Sandbox Code Playgroud)
我假设我需要一个外键将用户和评论绑在一起,然后还有文章/ coffeeshop的评论.