小编nao*_*nao的帖子

Rails:从控制器中的lib文件夹加载自定义类

我已经创建了一个lib/services/my_service.rb文件.

# /lib/services/my_service.rb
class MyService
...
end
Run Code Online (Sandbox Code Playgroud)

我想在app/controllers/my_controller中使用它

class MyController < ApplicationController
     def method
          service = MyService.new()
     end
Run Code Online (Sandbox Code Playgroud)

我收到的错误是MyService是一个未初始化的常量.我试着用它导入它

require '/lib/services/my_service.rb'
Run Code Online (Sandbox Code Playgroud)

但我得到了

cannot load such file -- /lib/services/my_service.rb
Run Code Online (Sandbox Code Playgroud)

编辑:我已尝试使用application.rb进行自动加载

config.autoload_paths << Rails.root.join('lib')
Run Code Online (Sandbox Code Playgroud)

但没有骰子.仍未获得未初始化的常量MyController :: MyService

ruby ruby-on-rails ruby-on-rails-5

7
推荐指数
2
解决办法
7960
查看次数

弹出Python元组中的第一个元素

有没有办法从Python元组中弹出第一个元素?

例如,对于

tuple('A', 'B', 'C')
Run Code Online (Sandbox Code Playgroud)

我想弹出'A'并且有一个包含'B'和'C'的元组.

由于元组是不可变的,我知道我需要将它们复制到一个新的元组.但是我怎样才能过滤出元组的第一个元素?

python

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

devise与devise_token_auth:如何同时处理Web应用程序和API的身份验证

我正在编写一个主要通过API访问的应用程序,但还将具有通过Web应用程序进行编辑的视图。

我想在两个平台上创建一个具有身份验证和授权的用户模型。

我很难理解devise和devise_token_auth库之间的关系,除了大多数铁路应用建议使用前者之外,后者对于仅API身份验证非常有用。

就我而言,应该使用什么适当的库?还是应该同时使用两者?我应该通过devise生成User模型,然后向其添加令牌auth吗?两个系统是否使用不同的身份验证方案?我只是想了解为什么devise_token_auth与devise分开存在。

我还对基于令牌的身份验证的复杂性有些困惑。简单地通过设计来注册和管理用户,为他们生成一个API密钥,然后让他们以此来签名他们的API请求,那会有什么问题。为什么在API中需要基于令牌的身份验证?

authentication ruby-on-rails devise ruby-on-rails-5 devise-token-auth

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

Rails 5:ActionMailer 的“deliver_later”永远不会在生产中交付

我有一个非常基本的邮件程序设置,如下所示来发送交易邮件程序:

class PayoutMailer < ApplicationMailer
  default from: 'hello@groundworkai.com'

  def payout_success_email(email, payment_size, user_name)
    @payment_size = payment_size
    @user_name = user_name
    subject = 'Your Rewards Have Been Sent!'
    mail(to: email, from: 'hello@myservice.com', subject: subject)
  end
end
Run Code Online (Sandbox Code Playgroud)

我正在用这条线测试:

PayoutMailer.payout_success_email('test@example.com',
                                          200000,
                                          'test name').deliver_later
Run Code Online (Sandbox Code Playgroud)

我的问题是,当我使用 .deliver 或 .deliver_now 时,邮件会发送,但是当我使用 delivery_later 异步委托它时,它会排队但永远不会发送。输出是:

I, [2018-01-20T15:27:44.140104 #4]  INFO -- : [ActiveJob] Enqueued ActionMailer::DeliveryJob (Job ID: 265cb31a-dec4-4adb-866d-06e44645c53a) to Async(mailers) with arguments: "PayoutMailer", "payout_success_email", "deliver_now", "test@example.com", 200000, "test name"
Run Code Online (Sandbox Code Playgroud)

我知道 ActionJob 在我使用 Deliver_later 时正在处理它,根据文档

Active Job 的默认行为是通过 :async 适配器执行作业。因此,您现在可以使用 …

ruby-on-rails actionmailer ruby-on-rails-5

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

通过命令行以编程方式设置 git 凭证缓存

我正在使用该命令,git config credential.helper 'cache'因此不必重复输入用户名和密码。但是,这要求我设置一次凭据。有没有一种方法可以初始化缓存,管道中来自环境变量的值,该变量将在 runitme(例如$USER$PASS)中可用,但不能长期存储?

我不想使用git config user.name "your username"和等效的password命令,因为它会尝试以明文形式存储密码。我基本上只想在脚本中运行

git config credential.helper 'cache'
git config /*set $USER in cache*/
git config /*set $PASS in cache*/
Run Code Online (Sandbox Code Playgroud)

但不确定第二个和第三个命令会是什么样子,如果它们存在的话。

git

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

Ruby:使用字符串访问成员变量(反射)

我有一个Ruby对象User,它有一个:first_name成员变量.我希望能够使用字符串访问该变量.

所以,如果我有一个名为u的用户:

u.'first_name' 应该相当于 u.first_name

我如何使用反射来获取u.first_name通过字符串,该字符串作为变量传入?

ruby reflection ruby-on-rails

2
推荐指数
1
解决办法
943
查看次数