Rails 4.2,active_jobs,callback_methods
在自定义作业的perform方法中,我创建了一条新记录(并将文件上传到S3).如何在after_perform回调中传递或获取新记录ID?我想发送一封post_perform的电子邮件,其中包含指向S3文档的链接...但是,不知道如何在after_perform方法中获取id.根据文档,您可以使用job.attributes,但我得到'未定义的方法属性'.
我可以将邮件程序调用移动到perform方法中,但我宁愿使用回调来正确处理它.我不确定如何在perform方法之外访问属性(或这些属性的来源).
我试着通过将其置于回调中来做一些侦探工作(以确定回调可用的属性):
puts "job: #{ job }"
Run Code Online (Sandbox Code Playgroud)
要么
puts "job: #{ job.attributes }"
Run Code Online (Sandbox Code Playgroud)
要么
puts "job: #{ job.attributes.first }"
Run Code Online (Sandbox Code Playgroud)
这些都没有奏效,而且都导致了未定义的"属性".
我正在尝试获取本地PC的IP地址,以及我的其他PC中的一个,它获得了v4地址,但是在这一个代码:
Dns.GetHostEntry(Dns.GetHostName).AddressList(0).ToString()
Run Code Online (Sandbox Code Playgroud)
返回我猜的IPv6地址:
fe80::9c09:e2e:4736:4c62%11
Run Code Online (Sandbox Code Playgroud)
我如何获得IPv4地址?
我有一个数据库,我在mysql中存储超过1000000个名称.现在我的应用程序的任务有点典型.我不仅搜索数据库中的名称,还查找类似的名称.假设输入的名称为christian,则应用程序将显示建议的名称,如christine,chris等.不使用该like子句,最佳方法是什么.建议仅针对名称最后部分的更改.
我想将一个void*转换为char*reinterpret_cast和static_cast,哪一个适合?static_cast<char*> or reinterpret_cast<char*>
因此我有一个类,并想确定它是否具有虚函数.
我通过动态演员考虑的第一种方式.
class A
{
// hidden details..
};
class B:public A{};
int main()
{
A *a = new A;;
B* b = dynamic_cast<B*>(a);
}
Run Code Online (Sandbox Code Playgroud)
因此,在这种情况下,如果A类中存在虚函数,则编译将成功,否则将发生此错误:
错误:不能dynamic_cast\u2018a(类型\ u2018class A*\u2019)键入\ u2018class B*\u2019(源类型不是多态的)
有没有办法检查这个没有编译错误?注意:我没有c ++ 11或提升支持!
我见过一些在Windows上运行的程序可以访问iPhone和iTouch,可以访问照片库和音乐.什么API用于这种开发?
有人能告诉我注释配置中"@var"的含义吗?
例如:
/**
* @Column(type="string", length=20, unique=TRUE)
* @var string
*/
protected $login;
Run Code Online (Sandbox Code Playgroud) 我想使用 boost::filesystem 从文件中获取所有者和组,但从未找到任何方法来做到这一点。
我可以获得文件的权限,但由于我不知道文件的所有者,这没有任何意义。
我找到了 posix fstat 函数,但我再次想使用 boost 或另一个 C++ 库而不是 C 函数。
我在项目中使用Struct而不是简单的Hash来为一组键值对提供语义名称.但是,一旦我构建了结构,我就需要输出一个哈希值.我在Ruby 1.9.3.例:
MyMeaninfulName = Struct.new(:alpha, :beta, :gamma) do
def to_hash
self.members.inject({}) {|h,m| h[m] = self[m]; h}
end
end
my_var = MyMeaningfulName.new
my_var.to_hash # -> { :alpha=>nil, :beta=>nil, :gamma=>nil }
Run Code Online (Sandbox Code Playgroud)
Struct有没有包含to_hash方法的原因?这看起来很自然,但也许有一个潜在的原因,为什么它不包括在内.
其次,是否有更优雅的方法来构建一个通用的to_hash方法到Struct(通常,通过monkeypatching,或通过模块或继承).
我们想要创建一个共享库(.so)来定位所有发行版,包括旧发行版.代码用C++编写并使用C++ 11特性,因此编译器必须至少为gcc 4.7.我们注意到,如果我们在安装了gcc 4.7.2的Linux机器上编译我们的代码(例如,Ubuntu 12.10),那么.so生产的版本1(GNU/Linux),而在较旧的OS(例如,CentOS 5.6)上版本是"版本1(SYSV)" - 具有GNU/Linux更新版本的库不能用于旧版本的操作系统.
所以我们尝试了在CentOS 5.6机器上安装gcc 4.7的方法,使用这个编译器编译我们的代码并与libstdc ++(-static-libstdc ++)静态链接 - 这产生了一个可以在我们找到的每个linux上使用的.so.
这适用于32位.但是,当我们在64位操作系统(CentOS)上遵循相同的方法时,这个错误导致我们尝试链接到的现有libstdc ++.是在没有-fPIC的情况下编译的.
所以我们尝试使用"-with-pic"选项编译gcc 4.7.2源代码,但是我们无法链接到新的libstdc ++.a - 错误是:
/opt/centos/devtoolset-1.1/root/usr/libexec/gcc/x86_64-CentOS-linux/4.7.2/ld:/usr/local/lib/libFoo.so:找不到符号_ZNSs7_M_copyEPcPKcm @ GLIBCXX_3的版本节点. 4 /opt/centos/devtoolset-1.1/root/usr/libexec/gcc/x86_64-CentOS-linux/4.7.2/ld:未能设置动态节大小:错误值collect2:错误:ld返回1退出状态
我们用Google搜索编译libstdc ++与-fPIC可能有问题,但为什么它适用于32位而不适用于64位操作系统?是否有另一种建议的方法来为所有Linux发行版创建一个.so?