小编Geo*_*roy的帖子

如何在ActiveJob回调方法中获取Job属性?

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)

这些都没有奏效,而且都导致了未定义的"属性".

ruby-on-rails callback rails-activejob

7
推荐指数
1
解决办法
2285
查看次数

使用VB.net获取本地IPv4计算机

我正在尝试获取本地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地址?

vb.net ipv4

6
推荐指数
1
解决办法
3万
查看次数

从大表中查找类似值的最佳方法

我有一个数据库,我在mysql中存储超过1000000个名称.现在我的应用程序的任务有点典型.我不仅搜索数据库中的名称,还查找类似的名称.假设输入的名称为christian,则应用程序将显示建议的名称,如christine,chris等.不使用该like子句,最佳方法是什么.建议仅针对名称最后部分的更改.

mysql sql

6
推荐指数
1
解决办法
659
查看次数

哪个转换在C++中是正确的?

我想将一个void*转换为char*reinterpret_cast和static_cast,哪一个适合?static_cast<char*> or reinterpret_cast<char*>

c++ type-conversion

6
推荐指数
1
解决办法
216
查看次数

类有虚函数吗?C++

因此我有一个类,并想确定它是否具有虚函数.

我通过动态演员考虑的第一种方式.

 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或提升支持!

c++ virtual casting virtual-functions

6
推荐指数
1
解决办法
229
查看次数

从Windows访问iPhone

我见过一些在Windows上运行的程序可以访问iPhone和iTouch,可以访问照片库和音乐.什么API用于这种开发?

c++ iphone

5
推荐指数
1
解决办法
862
查看次数

Doctrine 2注释和"var"

有人能告诉我注释配置中"@var"的含义吗?

例如:

/**
 * @Column(type="string", length=20, unique=TRUE)
 * @var string
 */
protected $login;
Run Code Online (Sandbox Code Playgroud)

php doctrine-orm

5
推荐指数
2
解决办法
1612
查看次数

使用 boost 获取文件的所有者和组

我想使用 boost::filesystem 从文件中获取所有者和组,但从未找到任何方法来做到这一点。

我可以获得文件的权限,但由于我不知道文件的所有者,这没有任何意义。

我找到了 posix fstat 函数,但我再次想使用 boost 或另一个 C++ 库而不是 C 函数。

c++ boost boost-filesystem fstat

5
推荐指数
1
解决办法
1466
查看次数

将to_hash(或to_h)方法添加到Struct的优雅方法?

我在项目中使用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,或通过模块或继承).

ruby ruby-1.9.3

5
推荐指数
1
解决办法
3035
查看次数

在Linux上编译一个共享库以定位所有发行版

我们想要创建一个共享库(.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?

c++ linux gcc libstdc++ static-linking

5
推荐指数
1
解决办法
1136
查看次数