小编Lau*_*ent的帖子

PHPUnit不使用Laravel 5

我刚刚安装了一个新的Laravel 5项目,这是我在这个版本上的第一个项目.PHPUnit应该是开箱即用的框架和我看到的每个教程只是phpunit在项目文件夹中键入以启动单元测试.

我检查过,PHPUnit在composer.json,我也做了一个composer install,composer update以防万一它不会在这里

website(master)$ composer update
Loading composer repositories with package information
Updating dependencies (including require-dev)
  - Removing phpunit/phpunit (4.6.1)
  - Installing phpunit/phpunit (4.6.2)
    Downloading: 100%
Run Code Online (Sandbox Code Playgroud)

但它根本不起作用根本不phpunit被认可

 website(master)$ phpunit
-bash: phpunit: command not found
Run Code Online (Sandbox Code Playgroud)

似乎没有人在谷歌搜索之前就遇到过这个问题.我希望我没有犯任何愚蠢的错误.有什么想法或建议吗?多谢你们 ;)

php phpunit laravel-5

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

Ruby 2.7 特定警告未显示

我们希望将代码库更新到 Ruby 3,最大的突破性变化之一是关键字参数与方法中参数的混合。这个警告应该会出现

warning: Using the last argument as keyword parameters is deprecated; maybe ** should be added to the call
Run Code Online (Sandbox Code Playgroud)

但我注意到在运行一个简单的脚本时,它只是没有出现

# script.rb
def my_method(argument, other:)
  puts "hello"
end

options = { other: "medium" }
argument = true

my_method(argument, options)

$ rvm use 2.7.5
$ ruby script.rb
hello

$ rvm use 3.0.1
$ ruby script.rb
script.rb:1:in `my_method': wrong number of arguments (given 2, expected 1; required keyword: other) (ArgumentError)
    from script.rb:8:in `<main>'
Run Code Online (Sandbox Code Playgroud)

它按计划在 Ruby 3 中中断,但在以前的版本中没有显示任何内容。

这种行为在我们的生产中是相同的,我在任何地方都找不到发生的情况。我已经使用过RUBYOPT='-W:deprecated',甚至 …

ruby ruby-on-rails deprecation-warning

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

Mongoose异步多重保存冲突

我使用Node/Mongoose/Socket.io有一个很大的逻辑问题...假设我有一个服务器模型,它通常在我的应用程序中同时调用,有些调用涉及更新模型中的数据.

    db.Server.findOne({_id: reference.server}).exec(function(error, server) {

        catches.error(error);

        if (server !== null) {

              server.anything = "ahah";

              server.save(function(error) { });

        }

    }
Run Code Online (Sandbox Code Playgroud)

有时,2个人会同时打电话给这个,而第一个人会保存()另一个人已经找到了一个"服务器"并得到了"旧对象",它不是最新的并保存( )它.

这里的一个大问题是,当第二个人将保存()"服务器"("旧对象")时,它将逐字地覆盖第一个的变化......你可以想象它将在我的应用程序上创建的大冲突.

我考虑将所有save()方法更改为update()来解决问题但是在项目中的某些时候直接使用update()非常棘手,而不是那么实用.

当有人更新时,有没有办法"锁定"findOne()调用?就像你发现一个()时你也会说"嘿,我会尽快更新,所以不要让人们现在就找到它"(使用Mongoose,甚至是MongoDb)

已经有一段时间我正在搜索我没有找到任何答案:(

希望你理解我的问题;)谢谢!

javascript mongoose mongodb node.js socket.io

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

当用户在Meteor和/或Iron路由器中离开页面时如何捕获?

用户离开我的Meteor应用程序(版本1.2.0.2)时,我试图捕获; 等同于SocketIO disconnect()服务器端的东西.

用户可以关闭他的浏览器,转到另一个网站或只是刷新页面,无论如何它都会触发

令人惊讶的是,我在互联网上搜索,一切都混乱,没有任何正常工作.我认为Meteor实际上是基于这种神奇的实时处理,所以它必须以某种方式管理这个事件.

Iron路由器文档指定:

onStop:路由停止时调用,通常在新路由运行之前.

我也找到了Router.load,Router.unload但没有一个能奏效.这是我目前[不工作]的代码,非常简单

Router.configure
  layoutTemplate: 'MasterLayout'
  loadingTemplate: 'Loading'
  notFoundTemplate: 'NotFound'

Router.onStop (->

  console.log('Try to stop')
  Users.insert({

    name: "This is a test"
    lat: 0
    lng: 0

    })

)
Run Code Online (Sandbox Code Playgroud)

我在这里做错了吗?你如何在我的应用程序中捕获此事件?

node.js meteor iron-router

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

自动加载路径和嵌套服务类在Ruby中崩溃

app/services在Rails 5项目中的文件夹下需要加载/需要类的问题很多,而我开始放弃这个问题。

首先要弄清楚的是,services/我在整个项目中都使用了简单的PORO类,以从控制器,模型等中抽象出大多数业务逻辑。

这棵树看起来像这样

app/
 services/
  my_service/
    base.rb
    funny_name.rb
  my_service.rb  
models/
 funny_name.rb
Run Code Online (Sandbox Code Playgroud)

失败#1

首先,当我尝试使用MyService.const_get('FunnyName')它时,它FunnyName来自我的models目录。MyService::FunnyName但是,当我直接进行操作时,它似乎没有相同的行为,在我的大多数测试和更改中,此方法都可以正常工作,这很奇怪。

我意识到Rails config.autoload_paths不会递归地加载东西;有意义的是,第一个FunnyName被捕获的是,models/funny_name.rb因为它肯定是已加载的,而不是另一个。

没关系,让我们找到一种解决方法。我将此添加到我的application.rb

config.autoload_paths += Dir[Rails.root.join('app', 'services', '**/')]
Run Code Online (Sandbox Code Playgroud)

这会将服务的所有子目录添加到中config.autoload_paths。显然,从Rails 5开始,不建议编写类似的内容。但是这个想法对我来说确实不错。

失败#2

现在,当我启动我的应用程序时,它崩溃并输出如下内容

无法自动加载常量Base,需要/.../backend/app/services/my_service/base.rb进行定义(LoadError)

名称已更改,但这是我之前编写的树的匹配路径

问题是,base.rb在错误导致我进入的确切文件中进行了定义,其中包含类似

class MyService
  class Base
  end
end
Run Code Online (Sandbox Code Playgroud)

解决方案差

因此,我尝试了其他解决方法,其中很多方法都无效。因此,我最终完全删除了autoload_paths,然后直接将其添加到application.rb

Dir[Rails.root.join('app', 'services', '**', '*.rb')].each { |file| require file }
Run Code Online (Sandbox Code Playgroud)

现在base.rb已正确加载,MyService.const_get('FunnyName')实际上将返回正确的类,并且一切正常,但这是一种令人作呕的解决方法。此外,它尚未经过测试,production但根据环境可能会产生问题。

application.rb声音中要求整棵树是个坏主意,我不认为可以这样保留。 …

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

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

如何将字符串转换为Elixir中的Ecto.DateTime?

我需要将包含有效UTC时间的字符串转换为一个字符串Ecto.DateTime,稍后我将以正确的格式将其插入到我的数据库中.我尝试过使用该Ecto.DateTime.cast(date)方法,但似乎没有用.该字符串Sat Aug 04 11:48:27 +0000 2012来自Twitter API.

我知道有些像Timex这样的库我还没有检查过.Elixir中是否有任何简单易用的解决方案?

datetime elixir ecto phoenix-framework

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

Rails 参数中的 dup 和 clone 存在明显问题

我在 Rails 控制器中。我尝试获取一些params数据并更改一些数据来更新模型,但我也想保持原始数据params不变。

合乎逻辑的方法是使用cloneordup但无论我尝试什么,它都会失败并更改原始哈希。

# Original product_params which is set as params.require(:product)
{"name"=>"Product 2",
 "brand"=>"Brand 2",
 "desc"=>"Placeat a sunt eos incidunt temporibus.\r\n\r\nReprehenderit repudiandae amet quibusdam dolorem et. Itaque commodi at.",
 "hs_code"=>"12212121",
 "options_attributes"=>
  {"0"=>{"name"=>"hkjlVariation 4", "suboptions_attributes"=>{"0"=>{"name"=>"Chkjlhoice 0", "id"=>"582209026b710eded24ecd12"}}, "id"=>"582209026b710eded24ecd13"},
   "1"=>
    {"name"=>"hhVhariation h5kkk",
     "suboptions_attributes"=>{"0"=>{"name"=>"Choice 0kh", "id"=>"582209026b710eded24ecd14"}, "1"=>{"name"=>"hkjChoice 1", "id"=>"582209026b710eded24ecd16"}, "2"=>{"name"=>"kkk"}},
     "id"=>"582209026b710eded24ecd15"},
   "2"=>{"name"=>"lh", "suboptions_attributes"=>{"0"=>{"name"=>"klhj"}}}}}

# Method to change the `suboptions_attributes` to `nil`
def product_params_without_suboptions
  copy = product_params.dup
  copy.tap do |product_param|
    product_param[:options_attributes].each do |key, option_attribute|
      unless …
Run Code Online (Sandbox Code Playgroud)

ruby ruby-on-rails

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

Laravel 5 枚举类型在创建时失败

这里真的很奇怪的问题。我正在通过 为我的网站生成管理员,\Console\Command并且在某些时候我显然创建了它。

$user = User::create([

    'first_name' => 'Admin',
    'last_name' => 'Inistrator',
    'phone' => '',

    'email' => $email,
    'password' => bcrypt($password),
    'role' => 'admin',
]);
Run Code Online (Sandbox Code Playgroud)

我的数据库中的结果是该帐户获得了一个user角色而不是admin,但是如果我这样做

$user = User::create([

    'first_name' => 'Admin',
    'last_name' => 'Inistrator',
    'phone' => '',

    'email' => $email,
    'password' => bcrypt($password),
    'role' => 'admin',

    ]);

$user->role = 'admin';
$user->save();
Run Code Online (Sandbox Code Playgroud)

然后它完美地工作。我怀疑 Laravel 5 在我创建一个新帐户时会做一些奇怪的事情,该帐户将与所有特征相关联,等等与User模型相关联......你怎么看?

PS:这是我的迁移表

use Illuminate\Database\Schema\Blueprint;
use Illuminate\Database\Migrations\Migration;

class CreateUsersTable extends Migration {

    /**
     * Run the migrations.
     *
     * …
Run Code Online (Sandbox Code Playgroud)

php mysql enums models laravel-5

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

Stripe 允许给客户钱吗?

我在几个项目中使用了Stripe API。

我第一次必须考虑一个特殊情况,客户注册他的卡(或其他任何可能的情况)并从 Stripe 获得一些钱;类似退款,但之前没有付款...

我意识到系统具有此类功能的风险,必须对其进行过度保护。

我在网上搜索,没有找到任何关于它的答案。是否可以 ?如果是,您如何使用 API 做到这一点?

api payment-gateway

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

帆水线中的多个模型更新

我正在建造一个关于帆(0.10.0-rc5)的项目几天,在少数情况下我需要使用相同的数据一次更新多个条目,所以我做了一些...

Servers.find({owner_id: anonymous_user.id}).exec(function(error, servers) {

  catches.error(error);
  queries.save_each(servers, {owner_id: user.id});

});
Run Code Online (Sandbox Code Playgroud)

有趣的部分是我创建的queries.save_each()...

/**
 * Save each ActiveRecord objects with the desired attributes
 * @param  {object} objects ActiveRecord object (e.g. servers, users)
 * @param  {object} updates datas to update
 * @return {void}
 */
save_each  = function(objects, updates) {

// For each object we will update the wanted datas
for (var n in objects) {

    objects[n] = variables.inject(objects[n], updates);
    objects[n].save(function(error) { 

        catches.error(error);

     });

}

}
Run Code Online (Sandbox Code Playgroud)

基本上,它检查每个条目并使用save()从新数据更新它.它工作正常,但我想知道在水线上是否已经没有做过这样做; 我没有找到任何东西,但我是风帆初学者,也许我错过了什么!

任何的想法 ?

node.js sails.js waterline

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