小编Geo*_*ath的帖子

为什么META-INF称为META-INF?

我试图解释Web应用程序的基础知识.我在META-INF和WEB-INF上遇到了这个问题.这些目录是如何获得这些名称的?

java web-applications

15
推荐指数
2
解决办法
3803
查看次数

友好ID - 未定义方法`slug ='for

我正在使用宝石Workflow,Paper Trail和Friend ID.

要使用Paper Trail跟踪状态更改,我已重写persist_workflow_state以显式更新工作流列,以便Paper Trail可以捕获更改.

https://github.com/geekq/workflow#integration-with-activerecord

def persist_workflow_state(new_value)
  update_attribute self.class.workflow_column, new_value
end
Run Code Online (Sandbox Code Playgroud)

现在,我已经介绍了没有slug列的Friendly ID,并且在达到上述方法时我得到了错误.

undefined method `slug=' for #<ModelName:0x007f81cf342cd8>
Run Code Online (Sandbox Code Playgroud)

有帮助吗?

ruby-on-rails friendly-id paper-trail-gem

9
推荐指数
2
解决办法
8294
查看次数

生成Zip文件并存储在GAE BlobStore中

我正在尝试生成一个zip文件并存储在App Engine的Blobstore中.现在,我没有从Blobstore获得有效的zip文件.不确定问题是压缩,存储,检索还是下载.

我已经根据以下问题的片段构建了代码.

在Blobstore中存储后,我让用户通过Flask应用程序下载它.

这是我想要做的事情的要点.

def zipit():
  zipstream = StringIO.StringIO()
  zfile = zipfile.ZipFile(file=zipstream, mode='w')
  bytes = "lorem ipsum dolor sit amet"
  zfile.writestr('loremipsum', bytes, compress_type=zipfile.ZIP_STORED)
  zfile.close()
  zipstream.seek(0)
  return zipstream.getvalue()


zip_file = files.blobstore.create(mime_type='application/zip')
zip_data = zipit()

with files.open(zip_file, 'a') as f:
  f.write(zip_data)
files.finalize(zip_file)
blob_key = files.blobstore.get_blob_key(zip_file)

blob_data = blobstore.BlobReader(blob_key).read()

# http://flask.pocoo.org/docs/api/
response = make_response(blob_data)
response.headers['Content-Type'] = 'application/zip'
response.headers['Content-Disposition'] = 'attachment; filename="loremipsum.zip"'
return response
Run Code Online (Sandbox Code Playgroud)

任何帮助深表感谢.

python zip google-app-engine blobstore flask

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

Rails控制器 - 继承自定义操作

我使用继承来干掉控制器代码.

class MastersController < ApplicationController
  def index
    ...
    ...
  end

  ...
  ...
end

class ItemsController < MastersController
end
Run Code Online (Sandbox Code Playgroud)

现在我已经向MastersController添加了一个自定义动作

class MastersController < ApplicationController
  def index
    ...
    ...
  end

  ...
  ...

  def clone
    ...
    ...
  end
end
Run Code Online (Sandbox Code Playgroud)

我添加了项目的路线

resources :items do
  get :clone
end
Run Code Online (Sandbox Code Playgroud)

现在,当我尝试访问myapp.dev/items/1/clone时,我收到错误

AbstractController::ActionNotFound at /items/1/clone
The action 'clone' could not be found for ItemsController
Run Code Online (Sandbox Code Playgroud)

截图

如果我在ItemsController中添加'clone'动作,则错误消失.

class ItemsController < MastersController
  def clone
    ...
    ...
  end
end
Run Code Online (Sandbox Code Playgroud)

如何在Rails控制器中抽象自定义操作?

controller ruby-on-rails ruby-on-rails-4

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

Rails 4:按月分组

在Rails / Ruby中,如何基于表中的日期列对月份进行分组和汇总度量。

我已经尝试过Railscasts的以下技术。

http://railscasts.com/episodes/29-group-by-month

到目前为止,我的代码看起来像这样

result = result.where(transaction_date: start..Date.current)
result = result.select(:transaction_date, :quantity)
result.group_by { |t| t.transaction_date.beginning_of_month }
Run Code Online (Sandbox Code Playgroud)

我想,我需要与SQL GROUP BY相当的Ruby来汇总数量。

我正在寻找的SQLite3版本是:

select strftime('%m', transaction_date)
     , sum(quantity)
from transactions
group by strftime('%m', transaction_date)
Run Code Online (Sandbox Code Playgroud)

ruby ruby-on-rails

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

在Kotlin阅读和处理HOCON

我想从HOCON(Typesafe配置)文件中读取以下配置到Kotlin.

tablename: {  
  columns: [
    { item: { type: integer, key: true, null: false } }
    { desc: { type: varchar, length: 64 } }
    { quantity: { type: integer, null: false } }
    { price: { type: decimal, precision: 14, scale: 3 } }
  ]
}
Run Code Online (Sandbox Code Playgroud)

实际上我想提取关键列.到目前为止,我已尝试过以下内容.

val metadata = ConfigFactory.parseFile(metafile)
val keys = metadata.getObjectList("${tablename.toLowerCase()}.columns")
                   .filter { it.unwrapped().values.first().get("key") == true }
Run Code Online (Sandbox Code Playgroud)

但它失败并出现以下错误.

Unresolved reference. None of the following candidates is applicable because of receiver type mismatch:
@kotlin.internal.InlineOnly public operator …
Run Code Online (Sandbox Code Playgroud)

kotlin typesafe-config hocon

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

将 Redis 与 Postgresql 同步

我有一个用例,持久数据将保留在 PostgreSQL 中,并且通过 Redis 实例进行查找。我想频繁地从 PostgreSQL 到 Redis 进行单向同步,以保持 Redis 实例最新。(Redis 短时间内有陈旧数据是可以的。)

有没有任何工具、库或技术可以做到这一点(我不需要重新发明轮子)?

我的应用程序堆栈有 PostgreSQL 和 Ruby on Rails。Node.js 也可以考虑。

ruby postgresql redis

4
推荐指数
1
解决办法
6976
查看次数

YAML (Ruby) 将“on”加载为 true

我正在尝试从 YAML 文件加载单词列表。文件中有一个条目

- on
Run Code Online (Sandbox Code Playgroud)

Ruby 将其加载为“true”,而不是“on”。类似地,“off”被加载为“false”。对 Psych 代码的快速检查显示“是”和“否”的处理方式相同。

除了在开关上添加引号之外,还有什么方法可以改变这种行为?

如果我读取文件并解析,而不是加载文件,我就可以看到这些值。

# test.yaml
- true
- false
- yes
- no
- on
- off
- y
- n
- Y
- N
Run Code Online (Sandbox Code Playgroud)

我通过解析而不是加载来获取 Psych 文档,其中包含转换为本机之前的文本。

YAML.parse_file('test.yaml')
Run Code Online (Sandbox Code Playgroud)

想知道如何正确提取它。

来自文档

“表示阶段是指已组成 YAML::BaseNode 对象的数据。在此阶段,文档可用作节点对象树。您可以在此级别执行 YPath 查询和转换。(请参阅 YAML::parse。 )”

需要有关编写全面的 YPath 查询来提取数据的帮助。

(PS:这可能看起来有点迂回,但这为我清理了数据管理中的很多东西)

ruby yaml

4
推荐指数
1
解决办法
2403
查看次数

Thor中的命令别名

可以在Thor中为命令创建别名吗?

就像Commander中的命令别名一样.https://github.com/tj/commander#command-aliasing

我能够找到选项的别名,但不能找到命令本身.

使用Thor的例子,

#!/usr/bin/env ruby
require 'thor'

# cli.rb
class MyCLI < Thor
  desc "hello NAME", "say hello to NAME"
  def hello(name)
    puts "Hello #{name}"
  end
end

MyCLI.start(ARGV)
Run Code Online (Sandbox Code Playgroud)

我应该能跑了

$ ./cli.rb hello John
Hello John
Run Code Online (Sandbox Code Playgroud)

我想将命令"hello"别名为"hi".

ruby thor

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

Perl - XML/HoH中的循环依赖性检查

我正在尝试使用示例工作流定义构建批处理/工作流脚本,如下所示.

<project id="1" name="Project One" desc="" status="">
    <module id="11" name="Module Eleven" desc="" status="">
        <group id="101" name="Group 101" desc ="" status="" skip="false">
            <task id="1001" type="Shell" priority="10" desc="" author="" added="" modified="" status="" skip="false">
                <predecessors ref="1002" />
                <program folder="." object="test.pl" />
                <arguments value="job1 10 0" />
            </task>
            <task id="1002" type="Shell" priority="10" desc="" author="" added="" modified="" status="" skip="false">
                <predecessors ref="1003" />
                <program folder="." object="test.pl" />
                <arguments value="job2 5 0" />
            </task>
            <task id="1003" type="Shell" priority="10" desc="" author="" added="" modified="" status="" skip="false">
                <predecessors ref="1001" /> …
Run Code Online (Sandbox Code Playgroud)

xml perl graph circular-dependency

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

我们如何在Riot.js中检测循环/渲染的结束?

在Riot.js中,可以使用和if属性/帮助器有条件地显示元素.https://muut.com/riotjs/guide/#conditionals

我一直在努力做到这一点,这对我来说似乎没有用.这是一个Codepen.http://codepen.io/geordee/pen/EjYgPq?editors=100

<!-- include riot.js -->
<script src="https://cdnjs.cloudflare.com/ajax/libs/riot/2.0.14/riot+compiler.min.js"></script>

<script type="riot/tag">
  <todo-item>
    <li>
      { item }
    </li>
  </todo-item>
</script>

<!-- include the tag -->
<script type="riot/tag">
  <todo>
    <h3>{ opts.title }</h3>
    <p>total items: { opts.items.length }</p>
    <ul each={ item, i in opts.items }>
      <todo-item item={ item }></todo-item>

      <!-- these work -->
      <div if={ true }> item { i } </div>
      <div if={ false }> do not show this </div>

      <!-- conditional -->
      <div if={ i == (opts.items.length - 1) }> …
Run Code Online (Sandbox Code Playgroud)

javascript riot.js

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

设计和多租户范围

注意:原始问题有所改变.我找到了两个解决方案,可能正在改变设计的方式.

在任何情况下,我都很想知道,为什么RequestStore不起作用(是因为Warden拦截了中间件堆栈中的消息?),Thread.current如何工作,以及为什么实例变量是一个不稳定的解决方案.


我在我的应用程序中使用default_scope启用了多租户,包括Devise User模型.

在application_controller.rb中,我有

around_filter :set_request_store

def set_request_store
  Tenant.current = current_tenant.id
  yield
ensure
  Tenant.current = nil
end
Run Code Online (Sandbox Code Playgroud)

而Tenant.current又设置了一个RequestStore哈希键.

在tenant.rb

def self.current
  RequestStore.store[:current_tenant_id]
end

def self.current=(tenant_id)
  RequestStore.store[:current_tenant_id] = tenant_id
end
Run Code Online (Sandbox Code Playgroud)

在我的routes.rb文件中,我有以下内容

  unauthenticated do
    root to: 'home#index', as: :public_root
  end

  authenticated :user do
    root to: 'dashboard#index', as: :application_root
  end
Run Code Online (Sandbox Code Playgroud)

通过日志可以更好地说明我遇到的问题.

成功登录后.

Started POST "/users/sign_in" for 127.0.0.1 at 2014-09-24 14:57:13 +0530
Processing by Devise::SessionsController#create as HTML
  Parameters: {"utf8"=>"?", "authenticity_token"=>"[FILTERED]", "user"=>{"tenant_id"=>"1", "email"=>"user@example.com", "password"=>"[FILTERED]"}}
  Tenant Load (0.9ms)  SELECT  "tenants".* FROM "tenants"  WHERE "tenants"."subdomain" = …
Run Code Online (Sandbox Code Playgroud)

ruby-on-rails multi-tenant devise

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