小编dai*_*no3的帖子

在RSpec中多次运行Rake任务返回nil?

我猜这与Rake读取文件一次而不是倒带有关吗?但是,我不确定.有任何想法吗?

require 'rake'
require 'rails_helper'

describe 'MyRakeTask' do

  before(:all) do
    Rails.application.load_tasks
  end

  it 'does something sweet' do
    Rake::Task["namespace:my_task"].invoke # runs task
  end

  it 'but it doesnt do it again' do
    Rake::Task["namespace:my_task"].invoke # returns nil
  end

end
Run Code Online (Sandbox Code Playgroud)

rake rspec ruby-on-rails

11
推荐指数
1
解决办法
1605
查看次数

如果 MEDIA_URL 在 STATIC_URL 内,runserver 无法提供媒体

我的配置如下:

STATIC_URL = '/static/'
MEDIA_URL = '/static/media/'
Run Code Online (Sandbox Code Playgroud)

自从我将 django 2.1 升级到 2.2 后,我得到:

"runserver can't serve media if MEDIA_URL is within STATIC_URL."
django.core.exceptions.ImproperlyConfigured: runserver can't serve media if MEDIA_URL is within STATIC_URL.
Run Code Online (Sandbox Code Playgroud)

我理解错误。我的问题是“为什么不”?您希望媒体作为 static 的子目录有非常充分的理由。

此外,在 2.2 发行说明中零提及此重大更改:https : //docs.djangoproject.com/en/3.0/releases/2.2/

django django-staticfiles

9
推荐指数
1
解决办法
2684
查看次数

将angular指令添加到rails中的simple_form会破坏集合输入的选定选项

不确定是否有解决方法,我做错了,或者这是简单形式或角度之间的碰撞,但是:

.field
  = f.input :role, collection: roles.map(&:name), selected: user.role.try(:name), include_blank: 'Select', required: true, input_html: { "ng-model" => "role" }
Run Code Online (Sandbox Code Playgroud)

渲染(看起来正确):

   <select ng-model="role" class="select required" name="user[role]" id="user_role">
      <option value="">Select</option>
      <option value="system">system</option>
      <option selected="selected" value="fcm">fcm</option>
      <option value="regulatory">regulatory</option>
      <option value="operations">operations</option>
      <option value="help_desk">help_desk</option>
     </select>
Run Code Online (Sandbox Code Playgroud)

但所选值是include_blank"选择" 的值.是的,role是在用户上设置的.

simple-form angularjs ruby-on-rails-4

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

如何在vim中像Sublime一样跨多行复制引号内的文本,然后粘贴

我一直在做一些挖掘,但似乎找不到一种方法来实现与 Sublime 的多行选择非常相似的功能,如下面的 giphy 所示:

  1. 复制双引号内的所有文本(因此假设类似 yi"
  2. 跨多行执行此操作
  3. 粘贴所有寄存器?或者更好的是从单个寄存器到新缓冲区的所有内容
  4. 将冒号(变成符号)添加到粘贴文本的每一行
  5. 转到每行末尾并添加逗号

我认为视觉选择和运行norm yi"就可以做到这一点,但它只捕获视觉选择的最后一行。

vim sublimetext2

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

#tty是什么?关于STDIN意味着什么/做红宝石?

阅读ruby文档在这里并没有太大帮助:

如果ios与终端设备(tty)关联,则返回true,否则返回false.

我希望得到一些额外的资源或解释,以帮助我更好地理解这一点.

对于上下文,我正在编写一个小命令行程序,它接受文件路径或管道内容到ruby可执行文件中并#tty?用于确定即将发生的事情.

谢谢!

ruby io

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

如何创建类似于javascript节流/反跳功能的Rails / Ruby方法

在我们的应用程序中,我们公开了供外部服务使用的回调路由。当我们收到回调时,我们使用客户端/浏览器端的Eventsource和服务器端的抽筋向客户端订阅者发布更新。但是,有时,我们会受到来自此外部服务的回调请求的轰炸,这导致我们向客户端发布了很多更新。在Rails端是否有一种类似于javascript防反跳功能的方法,可以在收到的回调之间等待设置的时间来发布消息?

我们已经在使用sidekiq +线程,因此欢迎使用这些工具的建议。

ruby ruby-on-rails cramp debouncing eventsource

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

Actioncable流程的自定义日志记录详细程度

我有以下Procfile:

web: bundle exec rails s -p $PORT -e $RAILS_ENV Puma
action_cable: bundle exec puma -p $ACTIONCABLE_PORT cable/config.ru
sidekiq: bundle exec sidekiq
Run Code Online (Sandbox Code Playgroud)

无论是action_cable过程和web通过的.bashrc变量出口钢轨过程中使用$ RAILS_ENV变量,设置它的环境轨靴.因此,运行工头开始为两个负载测试环境action_cableweb.但是,我希望actioncable使用:infoLog Level,我希望使用web rails进程fatal.

有没有办法可以启动这两个进程并使用ENV或进程信息来动态设置日志级别?

像(伪代码)的东西:

# environments/test.rb
config.logger = ActiveSupport::TaggedLogging.new(ActiveSupport::Logger.new(STDOUT))
if Process.port == 28080
  config.log_level = :info
  Sidekiq::Logging.logger.level = Logger::INFO
else
  config.log_level = :fatal
  Sidekiq::Logging.logger.level = Logger::FATAL
end
Run Code Online (Sandbox Code Playgroud)

logging ruby-on-rails actioncable

5
推荐指数
0
解决办法
455
查看次数

Python测试夹具运行单个测试?

我正在寻找像ruby rspec的focus元数据或elixir的混合标签来运行单个python测试.

Ruby RSpec示例:

# $ rspec spec
it 'runs a single test', :focus do 
  expect(2).to eq(2)
end
Run Code Online (Sandbox Code Playgroud)

Elixir ExUnit&Mix示例:

# $ mix test --only focus
@tag :focus
test "only run this test" do
  assert true
end
Run Code Online (Sandbox Code Playgroud)

这可能/任何python测试运行器和夹具组合可用吗?通过指定嵌套的module.class.test_name命令行参数来运行单个测试在大型项目中会变得非常冗长.

所以像:

期望的Python代码:

# $ nosetests --only focus

from tests.fixtures import focus

class TestSomething(unittest.TestCase):
    @focus
    def test_all_the_things(self):
        self.assertEqual(1, 1)
Run Code Online (Sandbox Code Playgroud)

python unit-testing nose pytest

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

Golang - Marshaling XML time.Time作为XML属性的日期格式

我正在尝试格式化实现Marshaler接口的自定义时间类型Date,并在编写为XML时将其自身格式化为"2006-01-02".

type Person struct {
    ...
    DateOfBirth           Date      `xml:"DOB,attr"`
    ...
}

type Date time.Time

func (d Date) MarshalXML(e *xml.Encoder, start xml.StartElement) error {
    dateString := fmt.Sprintf("\"%v\"", time.Time(d).Format("2006-01-02"))    
    e.EncodeElement(dateString, start)

    return nil
}
Run Code Online (Sandbox Code Playgroud)

我使用这个SO作为参考,但抛出了错误 - &xml.UnsupportedTypeError {Type:(*reflect.rtype)}.

我错过了什么,有什么想法吗?

xml go

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

elixir 将字符串常量化以获取模块 (String.to_module/1)?

我在会话中存储了一些元数据以根据字符串访问不同的模块。

有没有办法做到这一点?

String.to_module("MyApp.Vendor")   #=> MyApp.Vendor
String.to_module("MyApp.Customer") #=> MyApp.Customer
Run Code Online (Sandbox Code Playgroud)

然后最终目标是使用account_typeid 查找 Struct 以执行特定于该类型的操作。

account = Repo.get(String.to_module(account_type), account_id)
do_something_with(account)

def do_something_with(%Customer{id: id}) do 
  # yada yada
end

def do_something_with(%Vendor{id: id}) do 
  # something else
end
Run Code Online (Sandbox Code Playgroud)

elixir phoenix-framework

3
推荐指数
2
解决办法
605
查看次数

Golang嵌套,重命名的XML属性

给定以下结构:

type book struct {
    XMLName xml.Name   `xml:"DailyAct"`
    Symbol     string  `xml:"TradeInstrId,attr"`
    EntityId   string  `xml:"EntityId,attr"`
    AssetClass string  `xml:"AssetClass,attr"`
    Open       int     `xml:"Open"`
    High       int     `xml:"High"`
    Low        int     `xml:"Low"`
    Close      int     `xml:"Close"`
    // Type      string `` //I'll leave this for another question
}
Run Code Online (Sandbox Code Playgroud)

我当前的XML:

  <DailyAct EntityId="foo" AssetClass="bar" TradeInstrId="Symbol" >
      <Open>2</Open>
      <High>3</High>
      <Low>1</Low>
      <Close>5</Close>
  </DailyAct>
Run Code Online (Sandbox Code Playgroud)

但是,我需要重新调整结构的某些字段的用途(或以其他方式生成xml)以实现:

<DailyAct EntityId="foo" AssetClass="bar" TradeInstrId="Symbol">
  <Open Price="2" Type="IND"/>
  <High Price="6" Type="IND"/>
  <Low Price="1" Type="IND"/>
  <Close Price="4" Type="IND"/>
</DailyAct>
Run Code Online (Sandbox Code Playgroud)

但是我得到了:&errors.errorString{s:"xml: DailyAct>Open chain not valid with Price,attr flag"} (actual)当我尝试像这样嵌套字段时: …

xml go

0
推荐指数
1
解决办法
1113
查看次数

Phoenix Websocket socket.disconnect()与channel.leave()

我正在阅读有关如何从套接字断开连接或离开通道的phoenix文档

我天真的理解是 channel#leave

取消订阅服务器事件,并指示通道在服务器上终止

socket#disconnect维护通道服务器端,以便重新连接。

因此,我的问题是何时使用一个与另一个。

听起来有两种情况需要考虑:

  1. 还有其他客户端订阅了相同的频道,因此#leave将切断他们的连接,而倾向于#disconnect
  2. 但是,如果存在用户/帐户损耗,则从不调用来leave维护服务器上的“死”通道,而对于长时间运行的进程,这可能是一个问题吗?

我在想这个吗?如果我们选择只使用#disconnect-roll,我们是否应该实施定期的清理任务以杀死长时间运行的“死”通道?

谢谢!

elixir websocket phoenix-framework

0
推荐指数
1
解决办法
597
查看次数