我正在使用AutoMapper,正在映射的实体的一些值是我当前方法中的变量.我试过谷歌它但无济于事.我可以将一组KeyValue对或一个对象或东西传递给我的映射以使其使用这些值吗?
//comment variable is a Comment class instance
var imageComment = AutoMapper.Mapper.Map<Data.ImageComment>(comment);
//I want to pass in imageId so I dont have to manually add it after the mapping
imageComment.ImageId = imageId;
Run Code Online (Sandbox Code Playgroud) 我正在使用Sidekiq以异步方式发送我的电子邮件,但是由于无法找到电子邮件模板而遇到了持续性错误.它不一致,因为它不时工作(就像我正在测试时).您可以看到我甚至尝试指定模板的路径和名称.
我在Honeybadger收到的错误是: ActionView::MissingTemplate: Missing template signup_mailer/welcome_message with "mailer". Searched in: * "signup_mailer"
app/mailers/signup_mailer.rb
class SignupMailer < ActionMailer::Base
default from: 'hello@companycam.com'
def welcome_message(company, user)
@company = company
@user = user
@web_url = root_url
mail(to: @company.email, subject: 'Welcome to CompanyCam', template_path: 'signup_mailer', template_name: 'welcome_message')
end
end
Run Code Online (Sandbox Code Playgroud)
你可以在图片中看到,实际上有一个被调用的视图welcome_message.html.erb和文本版本也位于其中app/views/signup_mailer/

我正在从Ruby 2.3.1升级到Ruby 2.4.1,因此Unicorn似乎与新版本不兼容.我得到以下错误.我正在使用Unicorn 5.1.0并尝试使用Unicorn 5.3.1无济于事.我是否需要使用不同的lib而不是XCode Tools进行编译?
启动服务器后,我立即得到错误foreman start和Procfile:
webpack: bin/webpack-dev-server
gulp: gulp
redis: ./scripts/start_redis_server.sh
sidekiq: bundle exec sidekiq -C config/sidekiq.yml
annotations_server: ./scripts/start_annotation_server.sh
rails: bundle exec unicorn_rails -p 3000 -c config/unicorn.rb
Run Code Online (Sandbox Code Playgroud)
如果我使用一个简单的东西bin/rails s,它似乎开始并运行良好我为什么我认为它是特定于Unicorn.
objc[40847]: +[__NSPlaceholderDictionary initialize] may have been in progress in another thread when fork() was called.
objc[40846]: +[__NSPlaceholderDictionary initialize] may have been in progress in another thread when fork() was called.
objc[40846]: +[__NSPlaceholderDictionary initialize] may have been in progress in another thread when fork() was …Run Code Online (Sandbox Code Playgroud) 我正在使用0.9.3Active Model Serializers 的版本。当我调用render json: @collection甚至单个对象时,它使用默认to_json方法并返回完整对象。我没有尝试任何花哨的东西。我的控制器在目录中app/controllers/v1/,序列化程序在目录中app/serializers/v1/,我也在app/serializers/. 序列化器类名称为UserSerializer,模型为User。为什么会发生这种情况的任何想法都会很棒。
我正在iOS上使用RocksDB,并且正在使用AsyncStorage适配器以及redux-persist。每当我启动应用程序时,都会出现错误:
Failed to open db at path /Users/chadwilken/Library/Developer/CoreSimulator/Devices/818C47D2-ECF0-4003-865E-1FCAADCEF624/data/Containers/Data/Application/6C4F8F80-52E3-48B1-8ED5-84FB9F087514/Documents/RKAsyncRocksDBStorage.
RocksDB Status: IO error: lock /Users/chadwilken/Library/Developer/CoreSimulator/Devices/818C47D2-ECF0-4003-865E-1FCAADCEF624/data/Containers/Data/Application/6C4F8F80-52E3-48B1-8ED5-84FB9F087514/Documents/RKAsyncRocksDBStorage/LOCK: No locks available.
Run Code Online (Sandbox Code Playgroud)
充当适配器的类是:
// Copyright 2004-present Facebook. All Rights Reserved.
#import "AsyncRocksDBStorage.h"
#include <string>
#import <Foundation/Foundation.h>
#import <RCTConvert.h>
#import <RCTLog.h>
#import <RCTUtils.h>
#include <rocksdb/db.h>
#include <rocksdb/merge_operator.h>
#include <rocksdb/options.h>
#include <rocksdb/slice.h>
#include <rocksdb/status.h>
static NSString *const RKAsyncRocksDBStorageDirectory = @"RKAsyncRocksDBStorage";
namespace {
rocksdb::Slice SliceFromString(NSString *string)
{
return rocksdb::Slice((const char *)[string UTF8String], [string lengthOfBytesUsingEncoding:NSUTF8StringEncoding]);
}
void deepMergeInto(NSMutableDictionary *output, NSDictionary *input) {
for (NSString *key in input) …Run Code Online (Sandbox Code Playgroud) 我有一个跨越多个表的查询,最终使用Active Model Serializers来呈现数据.目前,大部分时间都花在序列化器上,因为我不得不从序列化器本身查询一些数据.我想找到一种方法来加快速度,这可能不是使用AMS(这没关系).
我的数据模型如下:
Location
-> Images
-> Recent Images
-> Days Images
Image
-> User
Run Code Online (Sandbox Code Playgroud)
的recent_images和days_images是一样的images,但用范围做了where由天,筛选limit到6.
目前整个过程在本地需要大约15秒,在生产中需要2-4秒.我觉得我可以更快地执行这个,但我不完全确定如何修改我的代码.
获取Locations 的查询是:
ids = @company
.locations
.active
.has_image_taken
.order(last_image_taken: :desc)
.page(page)
.per(per_page)
.pluck(:id)
Location.fetch_multi(ids)
Run Code Online (Sandbox Code Playgroud)
fetch_multi来自identity_cache gem.然后这些结果击中了序列化器:
class V1::RecentLocationSerializer < ActiveModel::Serializer
has_many :recent_images, serializer: V1::RecentImageSerializer do
if scope[:view_user_photos]
object.fetch_recent_images.take(6)
else
ids = object.recent_images.where(user_id: scope[:current_user].id).limit(6).pluck(:id)
Image.fetch_multi(ids)
end
end
has_many :days_images do
if scope[:view_user_photos]
object.fetch_days_images
else
ids = object.days_images.where(user_id: scope[:current_user].id).pluck(:id)
Image.fetch_multi(ids) …Run Code Online (Sandbox Code Playgroud) 我们有一个images包含大约 2500 万条记录的表,当我根据多个连接的值查询该表时,规划器的估计与行计数的实际结果有很大不同。我们还有其他查询,这些查询大致相同,但没有所有连接,而且速度要快得多。我想知道我可以采取哪些步骤来调试和优化查询。另外,是使用一个索引覆盖连接和子句中包含的所有列where,还是使用多个索引,一个索引用于每个连接列,另一个索引包含子句中的所有字段where?
查询:
EXPLAIN ANALYZE
SELECT "images".* FROM "images"
INNER JOIN "locations" ON "locations"."id" = "images"."location_id"
INNER JOIN "users" ON "images"."creator_id" = "users"."id"
INNER JOIN "user_groups" ON "users"."id" = "user_groups"."user_id"
WHERE "images"."deleted_at" IS NULL
AND "user_groups"."group_id" = 7
AND "images"."creator_type" = 'User'
AND "images"."status" = 2
AND "locations"."active" = TRUE
ORDER BY date_uploaded DESC
LIMIT 50
OFFSET 0;
Run Code Online (Sandbox Code Playgroud)
解释一下:
Limit (cost=25670.61..25670.74 rows=50 width=585) (actual time=1556.250..1556.278 rows=50 loops=1)
-> Sort (cost=25670.61..25674.90 rows=1714 width=585) (actual …Run Code Online (Sandbox Code Playgroud) 在重新设计期间,我们将XCode项目切换为使用资产目录.我们需要几个大的背景图像,我们将其包含在资产目录中.这些图像最初是JPEG,我们将其重命名为PNG以节省空间.磁盘上的映像大小为19.1MB,但是当我们归档应用程序时Assets.car,生成的文件比它大6倍.我尝试过使用PNG并压缩它们,但尺寸仍然很大.我不确定我还能做什么.
我有 C# 代码:
byte[] bytes = new UnicodeEncoding().GetBytes(input);
return Convert.ToBase64String(new SHA256Managed().ComputeHash(bytes));
Run Code Online (Sandbox Code Playgroud)
将字符串编码为 SHA2 哈希值,然后进行 Base 64 编码。我需要将其转换为 Ruby。
我尝试了几种方法。这是其中之一:
hash = Digest::SHA256.digest(val.encode('utf-8'))
encoded = Base64.urlsafe_encode64(hash)
Run Code Online (Sandbox Code Playgroud)
我的代码都产生不匹配的相同结果。我无法让他们工作。任何有关转换的帮助将不胜感激。
经过一番折腾后,我能够让它与硬编码数组一起工作,问题是 C# 代码在数组中的每个元素后面添加了一个 0。这是工作的 ruby 代码(带有硬编码数组):
Digest::SHA256.base64digest([99,0,104,0,97,0,100,0].pack('C*').force_encoding('utf-16'))
Run Code Online (Sandbox Code Playgroud)
我想我可以遍历数组,但这似乎没有必要。
我在版本4.1.4 的Rails 应用程序中使用ActiveRecord 枚举。我的模型列上有一个枚举。当我尝试使用 helper 方法查看所有可用状态时,出现错误:您试图在模型“Message”上定义一个名为“status”的枚举,但这将生成一个类方法“new”,即已经由 Active Record 定义。statusMessagestatuses
该Message模型belongs_to其他两个车型,但是这不是问题,因为我注释掉的关系,它仍然呈现的错误。我似乎找不到其他人有这个问题。
class Message < ActiveRecord::Base
belongs_to :user
belongs_to :contact
enum status: %w(new assigned archived)
end
Run Code Online (Sandbox Code Playgroud) activerecord ×2
c# ×2
ios ×2
ruby ×2
asyncstorage ×1
automapper ×1
enums ×1
ios7 ×1
postgresql ×1
react-native ×1
rocksdb ×1
sha ×1
unicorn ×1
xcasset ×1